Here are two links which briefly describe the difference between the two: stateless, stateful
In short in the "Stateless" scenario we bind views directly to models, view models just expose the whole objects, not their properties, so we don't need any synchronization between models and view models.
In the "Stateful" scenario we make a copy of a model object and bind it to a view.
Are there any downsides in the "Stateless" scenario? Because it seems like it's a way to go by default. What stops us from implementing INotifyDataErrorInfo, INPC and all the stuff at the level of models?