Apostrophes / quotation marks are handled by the macOS text system, rather than by Scrivener itself (though smart quotes can be toggled on or off in Scrivener’s preferences).
Not an inherent software solution, but a workaround would be to type exactly what you want…
My guess is that it’s the dash, and/or the space after the dash, that triggers the “opening” quote marks, when “closing” quotes are required. So, as an alternative to Briar’s suggestion, type the closing word, then the quote mark, which should now be closing, and then go back and type space-dash-space between the two.
By rule every quotation mark is a closing quotation mark unless: It is either placed at the beginning of a paragraph or the preceding character is a Space, an opening bracket of any kind, a dash, or a hyphen. I might have forgotten some and maybe this is just correct for my native language German and at least slightly different in other languages. But a preceding Space is an unambiguous indicator for “Something new starts here!” across languages. Hence the opening quotation mark.
By the way, if you strive for punctuation as close to perfect as possible when automatized, plus other auto-replacing way beyond of what the macOS text system provides I strongly recommend Typinator. I don’t know if the competition like TextExpander has caught up but a few years ago when I checked all of this kind of programs Typinator was the only one that could handle punctuation replacement. The support of regular expressions makes it an extremely powerful tool.
I have noticed this also. If I type a double dash, which converts to an em dash, then put quotes straight afterwards, they show as opening quotes even if there’s no space after the em dash. The only way I’ve found to combat this is to put in a comma or full stop after the em dash and then put in the quotes. They are then correct and I can take out the comma or full stop and it’s fine.