Following code
Option Explicit ExecuteGlobal "WSCript.Echo b "
won't let you down. The executeglobal context is unaware of an explicitly declared option. But
Option Explicit ExecuteGlobal "Option Explicit : WSCript.Echo b "
does not work with runtime error. Everyting works, but in a separate environment. AND
Option explicit Dim b ExecuteGlobal "Option Explicit : WScript.Echo b "
It works as expected.
In the following code
Option Explicit ExecuteGlobal "Option Explicit: Dim a : a = 1 : Dim a : a = 2"
you will get an overridden name error. And this is a compiler error, not a runtime error.
If, as indicated, you are doing the same with classes
Option Explicit Class thisThing End Class ExecuteGlobal "class thisThing : End Class"
you get a runtime error, redefined name.
So, from your tests and these tests (and a few more), ExecuteGlobal โseemsโ to generate a new context, work inside it during execution of the transmitted code, and when exiting, the context is combined with the original call context.
So, to answer your questions:
a) Variables can be "redefined" if they are executed in different contexts. The values โโof the variables are combined.
b) ExecuteGlobal does not allow access to undefined variables if the ExplicitGlobal option is explicitly used.
c) A variable is a variable. The value can be changed to ExecuteGlobal, and it merges on exit. But class redefinition changes that something is, and not that contains somenthing.
I did not decompile the VBScript engine, but this seems like the observed behavior.