Можно ли использовать Model для взаимодействия с View вместо ViewModel?
Плюс в том, что структуру и интерфейс модели в больших проектах не хочется делать зависимым от вьюхи в какой бы ни было степени. Вот смотрите, у вас например есть атрибут Display или StringLength - зачастую такие вещи излишни в бизнес-модели. С этой моделью, возможно, будет работать код, вообще не имеющий ничего общего с выводом данных пользователю, например какой-нибудь фоновый бот или сборщик статистики. Или, что чаще встречается, с этой же моделью будет работать совершенно другое представление - например одна вьюха у вас "для всех", т.е. для клиентов, к примеру, интернет-магазина, а другая - для работников, которые обслуживают заказы. И у них те же данные о клиентах и заказах будут выводиться совершенно иначе.
Поэтому как правило удобнее иметь промежуточный слой в виде ViewModel, которая "приближает" данные общей модели к конкретному представлению. Я, например, часто делаю именно во ViewModel различные вычисляемые свойства, которые нужно вывести куда-нибудь, да хоть в таблицу. Т.е. в бизнес-модели у меня расход топлива на километр, и пройденный путь, а во ViewModel помимо этого еще и общий расход топлива на текущий момент времени (который, разумеется, рассчитывается на лету).
Можно и нужно, т.к. в противном случае получается несоблюдение принципа DRY, в больших проектах иметь тонну моделей и поддерживать все их в актуальном состоянии будет адом.