Отличие создание объекта через new и dependency injection?
При создании экземпляра объёкта через new вы просто создаёте экземпляр объекта т.к. это конструкция самого языка. Если этот объект нужно создавать как-то специфически, к примеру если надо передавать что-то в конструктор или как-то дополнительно конфигурировать и т.п. - всё это ваша ответственность. Если вам понадобится этот же объект где-то в другом месте проекта - то передача его туда - тоже ваша ответственность.

Dependency injection container, в отличие от этого обеспечивает следующие задачи:

Централизованное хранилище объектов и интерфейс для их получения
Автоматическое корректное создание сконфигурированных экземпляров объектов

Конкретные реализации могут предоставлять дополнительные сервисы, но описанные выше - основные. Конечно, внутри там в конечном итоге тот же new, просто логика создания, конфигурирования и хранения объектов вынесена в отдельную стандартизированную сущность которой можно и нужно пользоваться для упрощения и улучшения качества своего кода.
это разные вещи и их нельзя сравнивать. DI - это абстрактный шаблон проектирования, а не конструкция языка.