Смотрите, прокидывать через все приложение кучу props - это очень неправильно. Если будет меняться какой-либо пропс то он вызовет обновление всех компонентов через которые он явно передается, даже если он там не используется. Если уж очень хочется использовать такой путь - то уж лучше использовать
React Context.
По поводу создания контейнеров - тут вопрос стиля. Я довольно часто встречаю в проектах такое разделение:
components - все stateless компоненты и также компоненты где нужен только стейт из redux, тут просто сам компонент заворачивается в connect()
containers - компоненты где нужны и стейт и экшены, тут нужно помнить основные свойства (из знаменитой
статьи) контейнеров, т.е. никакой верстки, возможно использовать только другие компоненты и т.д.
Хотя правильнее всего разбивать приложение на небольшие и универсальные компоненты, как написали выше. Это конечно не так просто в начале, по сравнению с убер-компонентами, но зато потом это все окупится с лихвой.