Answer
CollectionView is newer, faster, and more flexible: it has no built-in cell types, uses flexible DataTemplates, supports horizontal/grid layouts and multiple selection, and virtualizes more efficiently. ListView carries cell concepts (TextCell, ViewCell), pull-to-refresh, and headers/footers built in. New code should default to CollectionView, adding RefreshView for pull-to-refresh.
<RefreshView IsRefreshing="{Binding IsBusy}" Command="{Binding RefreshCommand}">
<CollectionView ItemsSource="{Binding Items}" />
</RefreshView>Real-world example Migrating a feed from ListView to CollectionView wrapped in RefreshView improves scroll performance while keeping pull-to-refresh.