Определенно, наилучшим подходом является использование общего сервиса, как указано в статье. Вам не обязательно использовать BehaviorSubject. Вы можете использовать обычные темы, если хотите, или даже более классические методы получения и установки, если это вам более знакомо (хотя я настоятельно рекомендую использовать реактивный подход с использованием RxJS).
Сервисы обычно создаются как одиночные, поэтому у вас возникнет проблема с долго выполняющимися Observables, если вы не добавите для этого какую-то пользовательскую логику (например, создайте метод в сервисе для отписки и вызовите этот метод в любом из крючок компонента onDestroy).
Возможно, я неправильно понимаю ваш вопрос, но если вы беспокоитесь о разоблачении объектов поведения, вы всегда можете обернуть их в наблюдаемую и просто выставить видимую:
private myBehaviorSubject = new BehaviorSubject<boolean>(false);
myObservable = this.myBehaviorSubject.asObservable()
Надеюсь, что ответил на ваш вопрос.