I come up against this decision frequently and I constantly vacillate on what approach to take.
Many MVVM examples have the model being passed into the constructor of the view model. Hence every VM is coupled to a Model. The logic to retrieve the Model and create the VM is outside of the VM "somewhere". Model has to know how to persist it changes.
The other option is to pass some sort of context, service or repository through to the VM and the VM decides what model it needs. The implication is the VM has a longer lifetime and might be reused to display many different models. The VM will commit changes to the model back using the supplied service.
Has anyone come up with any rules for working out the best approach for a given scenario?