The key concept here is "request context". Everything that is loaded in Fuel, like config, language files, views, are loaded from their context, which determines what search paths are used to look for a file.
If you request a controller in a module A, the context of that request is "module A". Which means files are loaded from: the module, any loaded package, the app, the core", in this order.
When you call a class in another module, the context doesn't change. Nothing in Fuel is aware of the fact that your in another module, and there is no way to determine that you are. This explains why you still load resources from "module A".
Second part of your question: you should not call cross-module (or from app to a module for that matter). That will create a tight coupling between the two, which is always a bad idea. It has other downsides too, one of which you have now experienced.
The correct way to call a controller in another module is to do an HMVC call: