For mission critical apps, I would suggest every application have its own module directory. That way when you deploy/upgrade your app you know exactly what modules (and versions) are being used. Often the modules an app is using will be stored in your source code repository along with the app's source.
Disk space is cheap - time spent tracking down software config issues isn't.