Потому что здесь важен перебор, пока мы не дойдем до контейнера, который имеет соответствующий сервис. Суть решаемой проблемы в том, что в родном контейнере мы можем получить любой существующий класс, котрого нет в определениях контейнера. Но у нас может быть ситуация, когда класс существут, но переопределен в другом контейнере с определенными параметрами.
Ещё тема... В каком-то контейнере, не помню автора, по умолчанию создаются только те объекты, которые явно определены конфигурацией. И надо отдельно включать возможность инстанцирования автоподгружаемых классов.