Это зависит от вас! Если ваше приложение может уведомить ViewModel о том, что оно больше не нужно, вам следует отписаться там.
Например, в нашем проекте у нас есть IViewDisposeService. Если представление (или его модель) нуждается в детерминированной финализации, при регистрации оно регистрируется в IViewDisposeService. Затем ядро использует тот же сервис, чтобы уведомлять зарегистрированные представления об удалении их из регионов.
Другой способ - использовать команды. Ваша модель выставляет команду, которая должна вызываться представлением, когда оно закрывается. ViewModel может использовать обработчик команд для отмены подписки.
Кстати, если вы беспокоитесь, что EventAggregator будет удерживать вашу ViewModel, это не проблема, потому что EventAggregator Prism использует слабые ссылки.