Oii Ikaro, tudo bem?
A abordagem de controller como objeto, em vez de usar métodos estáticos, é uma decisão de design que pode variar de projeto para projeto. No caso do curso, essa abordagem foi adotada para demonstrar como a injeção de dependências pode ser feita manualmente, sem a necessidade de um DI-container como o Inversify.
A injeção de dependências é uma técnica que permite que uma parte do código forneça as dependências (ou seja, instâncias de classes ou objetos que uma classe precisa para funcionar corretamente) para outras partes do código, em vez de ter classes criando essas instâncias por conta própria. Isso torna o código mais modular, mais fácil de testar e mais fácil de modificar.
Mas, você tá correto que um DI-container como o Inversify pode simplificar esse processo, automatizando a criação e a injeção dessas dependências. O Inversify, em particular, é um poderoso e leve DI-container para JavaScript/TypeScript que pode ser muito útil em projetos maiores e mais complexos.
No curso, a injeção de dependências é feita manualmente para fins didáticos, para que você possa entender como ela funciona em um nível mais fundamental. Mas em um projeto real, você certamente pode considerar o uso de um DI-container como o Inversify para tornar seu código mais limpo e mais fácil de gerenciar.
Um abraço e bons estudos.