We tried this approach as this is what we do in Orchard 1 but the complexity involved and degraded experience were not worth it. For instance discovering modules would mean that they have to be in a specific folder under the web app. Not talking about dotnet tooling that doesn't work with this like razor precompilation, publish, pack, ... These can all be solved but with some significant amount of custom code and hacks. After implementing both we really do prefer the "referenced" way.
Yes you can add any static file. You can reference it directly and it will incur a direct dependency with this module. We do that in the CMS packages, where jQuery for instance is provided by a single module even though most of them depend on this script.
The next level of features is provided by our Orchard.ResourceManagement module which can inject script/css management and manages dependencies from several modules.