It doesn't matter, really. In Node.js, modules are effectively free - they are only modules at the point of require (and in the require cache), and beyond that they are just values like everything else. The amount of modules doesn't matter, nor does the amount of values exported by them - the only thing that matters performance-wise is the amount of operations you carry out.
There may be a RAM penalty when using lots of modules, but this is so insignificant (even in big applications) that it's even really worth consideration, especially as it's static, and thus doesn't scale with load. We're talking megabytes here.
And if two modules depend on the same sub-dependency, but each think that they will have their own copy and thus put state into that copy... then unknowingly, they will be sharing the sub-dependency, and thus affecting each other's module state.
Never store state in modules, always keep state in closures at the appropriate level, and you should be fine. This is made a lot easier by using some functional constructs, for example.
EDIT: An example of 'module state', which is bad:
someModule = require("some-module");
someModule.thing = "cake";
This means that someModule.thing will now contain
cake everywhere where the same module copy is used.