The difference is the area in which the provider is available, and how many instances will be created.
instance for provider
If you add it to a component, each instance of this component will have its own instance of services, while for non-lazy modules there will be only one instance for the entire application.
scope
If you add it to a component, only the component and directives will be applied to it, and the descendants of this component will be able to enter an instance.
, DI , , , . , (AppComponent), (@NgModule()).
Lazy "" . , , .
, .
forRoot() ( - ), , .