У меня был похожий вопрос недавно
тут. Вопрос другой, а ответ тот же) Явно надо добавлять только в случае, если нужен один и тот же экземпляр (синглтон) во всем приложении, или если тайпхинтите интерфейсы, а методу надо предоставить конкретную реализацию интерфейса. В остальных случаях контейнер может сам подставить класс, без явной привязки к контейнеру. Почему так, а не создание через new - чтобы получить гибкость dependency injection и разруливание через dependency injection container, почитайте подробнее)