вообще все Observable должны следовать контракту - отписка = подписка. Это поможет избежать утечек всегда. Плюс не надо знать, что у тебя там, горячий или холодный. Те программист не будет лезть под капот и изучать внутренности потока, чтобы узнать, надо ли от него оптисываться. К тому же код постоянно меняется, сегодня из сервиса торчит http запрос, а завтра кто-то там воткнул shareReplay(), и вот у всех подписчиков уже утечка на ровном месте.