А контейнер модульный нужен, чтобы можно было подключать модули и делегировать получение зависимостей из других контейнеров:
RootContainer:
Logger
ModuleAContainer:
Cache => MemCache
И в классах модуля А понятно, что кеш будет обязательно в памяти, а логгер пусть с уровня приложения подтянется.
Так же любые определения можно "локализовать", если оно того требует. Без алиасов и копи-пасты конфига модуля в конфиг приложения.