Будет ли утечка при использовании Shared ViewModel?
В таком варианте никакой утечки нет. Ссылка на фрагмент ниоткуда не появится во ViewModel, если ты её туда не просеттишь. Значит время жизни ViewModel не влияет на время жизни фрагмента. То, что фрагмент хранит какие-то ссылки, никак не может повлиять на его время жизни. Граф объектов - направленный.
А зачем хранить ссылки на фрагменты? Нужно предоставить управление ими менеджеру фрагментов. Он сам знает, когда выкинуть тот или иной фрагмент из памяти. В своём приложении я специально добивался того, чтобы фрагменты оставались в памяти и не пересоздавались слишком часто. Для этого в транзакции мне пришлось обойтись без replace, attach и detach, а использовать show и hide. Я не храню нигде ссылки на фрагменты и нахожу их когда нужно через менеджер фрагментов по tag. А если фрагмент не нашёлся - создаю новый инстанс.