Para eu ver se entendi:
O subscribe é um event listener. Toda vez que tenho a emissão de um valor pelo next() do Subject, ou seja, um evento, é executada uma função de callback e o subscribe tem acesso a esse valor emitido.
Pelo que entendi, a emissão de um valor pelo Subject precisa que um listener(subscribe) já tenha sido inscrito antes da emissão para poder funcionar corretamente. A emissao deve vir antes do subscribe.
E esse problema pode ser contornado com o uso do BehaviorSubject que guarda o valor da emissão, podendo o subscribe ser feito depois da emissão.
Está correto?