In this trivial example.. technically there is no reason.
The point of the frameworks is to globally manage dependencies and various parts of their existence... not just to inject dependencies. Lifetime/scope, how/when, where/why. What you have here is still tightly coupled to ProductRepository
... and only that.
In a complex application, what you currently have requires something like this:
this.repository = new ProductRepository(
new ShoppingCartRepository(
new Logger()),
new ReviewsRepository(
new Logger()),
new Logger());
..whereas with a DI/IoC framework, you don't have to worry about any of that wiring up and all of the underlying lifetime/connection logic.