For Turbo, I switched to allowing each game having to explicitly specify which plugins it wants. I don't particularly see the benefit from unifying scripts and native libraries, though. It's true you could, in theory, write a native plugin and an alternative JS script, but I'm not sure the benefit.
From native, you rather need to write to your embedded engine. This is avoidable (something in the same vein as Swig, I toyed with this concept for years in TurboSphere), but you tend end up with terrible APIs in most languages, like how Unity is for any language but C#.
If you were to add the ability to call into, say, Python scripts from JS, I see some big benefits. But that implies some pretty epic changes--for one, requiring Python

For two, though, then you would need to write bindings. When I thought that through for TurboSphere, I figured I could just embed Python into a plugin, since I already have a binding API (the plugin API + V8, later SM's API), and the ability to embed any language I want just by having native plugins.
But at that point, I've defeated the purpose of a unified module system, since I'm back to using the native interface to define a script API.
I suppose at that layer it matters how much you want to put into the plugins, and how much you want to put in the engine. I moved to an extremely lean engine very early, so that easily dictated which way I went.