I parsed Microsoft.PowerShell.Utility to look at the Write-Output code, nothing special, it just iterates through an InputObject and passes each WriteObject method implemented by the current ICommandRuntime .

I assume that the tokenizer processing the text is trying to match anything, starting with - with the declared parameter. Otherwise, it passes it along the pipeline as an element in -InputObject . Since . cannot be part of the variable name and therefore cannot be part of the switch name, it can separate it before performing an if check, and when it turns out to be a parameter, it does not join it. with the rest of the token. Thus, you may find a minor error.
When using a back tick or quotation mark, this does not make this mistake, as it can symbolize everything.
These are all speculations, although I would really like you to receive an authoritative answer, just like you.
Edit
Evidence of what I say:
PS> echo -NoEnumerate.foo .foo
source share