Если чуток отойти мыслями от экранов, то когда вы выбираете письмо в списке писем - вы просто изменяете состояние приложения, "текущееПисьмо=1553". Этот стейт кто-то может захотеть слушать, и вашему списку писем особо не интересно, кто. А ещё его может изменить кто-то вообще другой, например, клик на пуш-нотификацию. И хорошее архитектурное решение позволит вам все эти взаимодействия легко организовать. А протаскивать ViewModel в обработчик клика по пуш-нотификации - занятие мягко говоря неблагодарное. У вас там даже активити нет)
Это то, что я имел в виду, когда говорил, что shared VM из общей задачи "передать изменение состояния от одной части приложения в другую" решает только очень конкретную подзадачу: передать событие от одного фрагмента к другому.