Al definir una clase de servicio/servicio en angular, la clase se decora con el decorador @injectable().
Según la guía angular: @Injectable() marca una clase como disponible para un inyector para la creación de instancias.
Entonces, ¿por qué no es necesario al crear un componente?
De la documentación angular (énfasis mío):
Los inyectores también son responsables de instanciar componentes como HeroesComponent. Entonces, ¿por qué HeroesComponent no tiene @Injectable()?
Puedes agregarlo si realmente quieres. No es necesario porque HeroesComponent ya está marcado con @Component, y esta clase decoradora (como @Directive y @Pipe, sobre las que aprenderá más adelante) es un subtipo de @Injectable(). De hecho, son los decoradores @Injectable() los que identifican una clase como un objetivo para la creación de instancias por parte de un inyector.
En otras palabras, al marcar una clase como componente, directiva o canalización, también los está marcando implícitamente como inyectables.