Предположим, вы собираетесь написать пакетный процесс для загрузки данных. Пакетный процесс будет обращаться только к модели, поэтому все, что вам нужно для обработки бизнес-правил, отделенных от пользовательского интерфейса, принадлежит модели. ViewModel может иметь некоторые бизнес-правила, но только если они относятся к пользовательскому интерфейсу.
В приложении, которое я создаю, Views и ViewModels находятся в одной сборке, а Model - в другой. Модель не имеет ссылок на сборку View, и только сборка Model имеет ссылки на базовое хранилище данных (комбинация вызовов Linq и веб-службы).