I was referring to doing a local sort and I've figured out the detail. The createStoreSortInfo reference was the clue, thanks.
I had done the sorting via:
Instead, it must be done on the column config:
StoreSortInfo<Model> sortInfo = new StoreSortInfo<Model>(modelValueProvider, modelComparator, SortDir.ASC);
GroupingView doesn't look at the first sort to see if that is correct, it automatically generates one by grabbing the Comparator from the ColumnConfig (which I had not set, and so I got the default sorting).
ColumnConfig<Model, String> modelColumnConfig = new ColumnConfig<Model, String>(modelValueProvider);