Да, вы должны использовать ObservableCollections. Не знаю, что в этом странного? Все, что делает ObservableCollection, это уведомляет любых слушателей об изменениях. Это не обязательно должен быть пользовательский интерфейс.
Ваша ViewModel не должна ничего знать о реальном View, использующем его, но, поскольку это модель View , можно предположить, что что-то собирается использовать, поэтому ObservableCollection - это путь, а также, насколько я знаю, обычная практика.
Кроме того, слушатели точно знают, какие элементы были добавлены или удалены, поэтому нет необходимости обновлять весь список, когда происходят изменения => лучшая производительность для обновлений. Это также то, что говорит Microsoft (хотя пока не могу найти статью об этом)