Czemu Service service = new ServiceImpl() jest zazwyczaj głupie

Czy rzeczywiście interfejsy powinny być zawsze i wszędzie? Jakie są zalety i wady obu rozwiązań? Czy w przypadku obiektów zarządzanych przez kontener Spring jest jakaś różnica?