First up, the EA API abstracts the underlying database engine. You only need to worry about that if you start issuing your own queries, and that's not related to what implementation langauge and container you use.
The EA "Object Model" API, which allows an application to access EA repositories, is available in COM (and thus .NET) and Java. The COM version is the more native one, and the Java version has in the past lagged behind in terms of feature implementation.
The Object Model API is also available to the in-EA scripting engine, which supports VBScript, JavaScript and JScript (spot the difference). An in-EA script executes in a context which includes the currently open repository, while an external application has to connect to (or create) a repository before it can do anything.
There is another API, the "Add-In Model" API. This is only available in COM, and allows Add-Ins to subscribe to events fired by the EA client. The Add-In is deployed as a DLL, and can integrate its own GUI into the EA client's.
In-EA scripts can be deployed in repositories and MDG Technologies. For other applications, you must decide on how to distribute and deploy them yourself.
If I understand the OP correctly, you're after writing a script that can be run either by the in-EA engine, or by some other, external, scripting engine like VBA or WSH. This would be difficult to achieve, since there is no simple way for the script to know which scripting engine it is being executed by. I also find it difficult to see any benefit.
Application code which accesses EA repositories can be executed in EA, or in a different framework, or as a stand-alone. The same is true for code which accesses Excel spreadsheets, PDF documents, etc. Which is appropriate depends on the situation.
I use in-EA scripts when performance is not a concern, when the application only needs to interact with an EA repository and perhaps the file system, or when there are deployment restrictions in a client's IT environment.
If there is a specific need to interact with an EA repository from within another application, I write in whatever framework that application supports (generally VBA).
For everything else, I use C# unless the client requests a Java implementation.
in VBScript (which doesn't have types) everything is a Variant
This isn't right. VBScript does have types. Variant is not the only type in VBScript, but it is the default type for variables whose type is not declared. There is nothing stopping you from declaring your variables with the correct types in a VBScript in the EA scripting engine. It's even got IntelliSense. However, it doesn't catch type-related errors for you like a proper IDE does.
Finally, throwing Eclipse into the mix never helped anyone accomplish anything. It's great if you really enjoy spending 85% of your time working on the tool as opposed to the problem, but if not, steer clear.
/Uffe