You don't need Modules, but if you want your loaded swfs to have PureMVC code inside them (and you want your app to be truly modular, in that you don't have code dependencies between the modules and the shell, then you'll want to use MultiCore.
If you choose to use MultiCore, Pipes is a handy utility for allowing PureMVC 'cores' (a unique Facade/Model/View/Controller set) to talk to each other in a decoupled fashion by sending messages to each other.
If you use MultiCore but don't want to use Pipes, then you should define interfaces that your modules implement, so that when one module has a reference to another and sets properties on it or invokes its methods, it does so by interface rather than the class of the module, otherwise you'll be creating dependencies between your modules and that's not modular at all.
Have a look at the MultiCore Overview Presentation for some more info:
http://puremvc.tv/#P002/-=Cliff>