Essa parte não ficou muito clara pra mim.
Se não tem a necessidade, não tem vantagem.
O nome da técnica onde você recebe todas as dependências de um método/classe por parâmetro ao invés de buscá-las você mesmo (usando new ou acessando métodos estáticos/singletons) é Inversão de Controle.
A principal vantagem é testabilidade. Fica muito mais fácil escrever testes de unidade e passar objetos fake/mocks para esses componentes. Além disso, o sistema fica menos rígido.
Agora, como o @javaflex falou, as vezes fazer isso é muito overkill. Não adianta querer ficar aplicando técnicas de design sem critério algum, senão o projeto não vai sair do lugar, nunca estará perfeito. Você precisa fazer testes de unidade com esses componentes? Você vai ficar mudando o comportamento da classe com base nessas dependências (e.g. trocar o banco de dados durante o runtime)?
Tem casos e casos.