Ваше подозрение верно. WPF не будет повторно использовать предыдущие представления. Если вы замените ItemsSource для ItemsControl новым List, он создаст совершенно новые представления для каждого элемента в списке, даже если те же элементы были в старом списке.
Вы можете проверить это самостоятельно, поместив пользовательский элемент управления в ItemTemplate и добавив точку останова или ведение журнала отладки в его конструктор. Если вы замените ItemsSource идентичным списком, вы увидите, что ваш элемент управления создается один раз для каждого элемента в списке. С другой стороны, когда элемент добавляется в коллекцию ObservableCollection, вы увидите, что он вызывается только один раз.
Обратите внимание, что ItemsControl может повторно использовать контейнер (например, ListBoxItem), если вы используете панель виртуализации и у вас включена утилизация контейнера. См. http://blogs.msdn.com/b/vinsibal/archive/2008/05/14/recycling-that-item-container.aspx. Однако он не может повторно использовать содержимое контейнера.