Boa noite,
Tanto a primeira forma abaixo, quanto a segunda são equivalentes pelo que notei ao realizar pesquisas. Dessa forma, posso pensar que para qualquer Feature Module que vier a criar, irei preferencialmente manter o escopo no próprio módulo (usando a forma 1 ou 2) e somente serviços que estarão presentes na aplicação toda, é que classificarei como provideIn: root (ex: autenticação).... mas visando já a boa prática de manter um singleton, eu poderia também, ao invés de classificar a autenticação em um módulo core (com providedIn: root), também deixá-lo com o providedIn: AuthModule?, ou seja, dentro de um Feature Module = Auth e com seu serviço de autenticação também no escopo somente do módulo? (não notei um benefício de mantê-lo como "providedIn: root", já que é utilzado somente quando for necessário / instanciando, exceto pela questão do tokenService)
(Forma 1) - Especificando na própria classe do serviço @Injectable({ providedIn: UserModule, })
(Forma 2) - Especificando no módulo que importa o serviço @NgModule({ providers: [UserService], })