Буквально вчера исправлял ошибку с тем, что Start раньше срабатывал, чем Prepare с параметром, и запрос осуществлялся без параметра, заменил на Initialize
Первое отличие: Start вызывается каждый раз, как VM отображается (ShowViewModel, NavigateTo, Close)
Initialize только один раз
Второе отличие: Initialize гарантированно вызовется после Prepare
Еще отличие: Initialize это асинк метод и он будет await'иться в презентере, а это может быть важно если после него еще какая-то работа должна идти (редкий кейс, но у меня сейчас так). Так что я выбрал Start там где нет параметра навигации. Где есть — там Initialize()