I write the following into a script module (i.e. a psm1 file) and do Import-Module for that file:
New-Variable -Name 'mytest' -Value 'Foo' -Scope 'Global'
Now I can access this variable in my PowerShell session. $mytest yields Foo, for example.
Alternatively, I write the following into a script module and do Import-Module for that file:
New-Variable -Name 'mytest' -Value 'Foo' -Scope 'Global' -Visibility Private
Now, the variable $mytest is not accessible in my PowerShell session anymore, fair enough.
But if I do . {$mytest}, I can get access on my "private" variable again - how comes? Just in case you would ask, & {$mytest} works the same, btw.
Note 1: Please be aware, that I don't ask about the (pseudo-)scope private, but about the visibility option private, which is a difference: The scope private blocks visibility "down the invocation hierarchy", whereas the visibility option private should block visibility "up the invocation hierarchy" (at least I have understood it that way).
Note 2: The global scope in the example above is only there, to be able to access the variable $mytest from the PowerShell session in the first attempt. Otherwise, even "free" public variables in a module ("free" meaning here, variables outside all scriptblocks) would not be accessible from the PowerShell session, except if you would use Export-ModuleMember -Variable 'mytest' (you would be forced to explicitly export everything else from the module, too, then). But this wouldn't change anything on the result.
Are you saying the help information in the bulti-in help file New-Variable is not clear:
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/new-variable?view=powershell-7.1
Or this article:
PowerShell variable properties: Description, Visibility, Options, Attributes
Of course, dot sourcing/running such things loads stuff into the memory of your current session.