Eai, beleza?
Então, a parada do BehaviorSubject no user.service.ts é meio que pra manter todo mundo atualizado sobre o usuário logado, saca? Ele emite notificações pra quem tá interessado em saber se rolou alguma mudança no esquema.
A ideia de jogar o usuário direto numa propriedade privada 'usuario' e mandar ver no jwt_decode parece fazer sentido, afinal, é sincrono, não tem aquela parada de esperar. O lance é que, se tu fizer isso, vai depender de outros caras que tão interessados nesse usuário ficarem de olho na propriedade.
O BehaviorSubject meio que faz isso de forma mais organizada, porque qualquer um que quer saber do usuário só precisa se inscrever nele e pronto, quando mudar, recebe o update. Se for na propriedade, a galera vai ter que ficar dando check o tempo todo.
Então, não é que não possa, mas usar o BehaviorSubject é tipo ter um assistente pessoal que avisa todo mundo quando algo mudou. Se jogar na propriedade, é mais como deixar um bilhetinho na geladeira e esperar que as pessoas vejam quando passarem por lá.