А чему он, собственно, противоречит? Вот у вас есть какой-нибудь произвольный PostService, который вы инжектите в PostController. PostService зависит, например, от PostRepository и CommentRepository (которые являются интерфейсами). У PostRepository имеется конкретная реализация, например, DoctrinePostRepository. Тоже самое и у репозитория комментариев. Сервис контейнер об этом знает, ибо мы все это забиндили в сервис провайдере:
$container->singleton(PostRepository::class, DoctrinePostRepository::class);
$container->singleton(CommentRepository ::class, DoctrineCommentRepository ::class);
То есть, контейнер сумеет разрешить зависимости PostService. Теперь вопрос к вам: для чего нам явно указывать что-то в сервис провайдере, если контейнер и так в состоянии самостоятельно создать объект, передав ему нужные зависимости?