てっきりINotifyCollectionChangedとIEnumerableあたり実装してればいいのかと思ってたら違ってました…。
https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.gridview.aspx
C# or Visual Basic apps should implement INotifyCollectionChanged and System.Collections.IList (not IList<T>). Virtualization requires both of these interfaces.
ということでINotifyCollectionChangedとIListの実装が必要でした。 独自コレクション作る人は要注意。