@BehnamAbdy ran across this issue today and it's extremely frustrating. What I was able to track down is, while I was setting the selected item index and the selected item when initializing the view model, something was causing the selected item view model property to get set to null. There is some type of initialization code that runs after the view model state is restored and before the page is displayed.
From the call stack, it seems a OnBindingContextChanged event is happening which is causing the picker to get "reinitialized" that wipes out the selected item property. Picker.ResetItems() is called which appears to be eventually calling Picker.UpdateSelectedItem() which seems to clear the selected item property.
To work around this, I added an override of OnNavigatedTo on the page. I check the selected item index on the view model and cross check the selected item is not null. If the two don't agree, I set the selected item in the view model and magically the picker displays the selected item from the pick list.