Как правило, я помещаю конфигурацию зависимостей в файлы .config только в том случае, если они представляют что-то, что я хочу изменить без перекомпиляции приложения. По умолчанию у меня нет таких конфигураций.
Я (пока) не знаю об AutoFac, но в Castle Windsor вы можете смешивать .config и программную конфигурацию контейнера, и это то, что я обычно делаю: у меня есть несколько зависимостей, настроенных в .config, потому что я хочу чтобы иметь возможность изменять их без перекомпиляции, но остальное регистрируется в коде (часто по соглашению).
Я подошел к проблеме, аналогичной вашей, создав отдельную библиотеку, которая содержит специализированный контейнер - это очень похоже на ваш подход. Этот специализированный контейнер инкапсулирует все общие конфигурации зависимостей.
В каждом приложении у меня есть еще более специализированный контейнер, который наследуется от общего контейнера и переопределяет любую конфигурацию, которая ему необходима для переопределения.
Насколько я понимаю ваше описание, этот подход, кажется, не слишком далек от вашего, но вы делаете себе одолжение и переносите как можно больше конфигурации из XML в код - таким образом, на самом деле он становится более управляемым.