If you have a combination of filter row and groupby header, the following sequence is causing a change of the initial list ordering.
1. apply a filter
2. perform a groupby
3. remove the groupby
4. remove the filter
After this sequence the previously visible items will be reordered to the end of the list (e.g. filter by lastname "Carlson", all "Carlson" objects).
The reason for this behavior is a performance fix applied via Bug 425641. To update the tree structure, it is necessary to add all items in the underlying list again, so the update events cause a rebuilding of the tree structure. This can be done by iterating over the whole collection and setting the element to the same position. For huge lists this was a very long taking operation. The fix was to use clear()-addAll() to reduce the number of operations. Unfortunately this is causing the described side effect, as the entries in the list are not updated but removed and added again in the current ordering.
Similar to the fixes related to sorting in this context, the fix for this issue is to remove the filter before the tree is updated and re-apply the filter once the tree update is finished. For this the GroupByDataLayer needs the FilterRowDataProvider to be set.