The BeforeSortChange event appears to be firing both when the user simply clicks a column heading to sort and when the user drags a column into the group by area so it gets grouped.
How does one tell the difference between these 2 different actions?
You would have to examine the e.SortedColumns collection and compare it against the SortedColumns collection of the band to see what changed. You would mainly be concerned with which columns are in the collection, the SortIndicator property (on the column header) and the IsGroupBy property.
It appears that checking the IsGroupByColumn is sufficient. One can check in both e.SortedColumn and the sorted columns collection of the grid to see if any columns are being grouped on.
Thanks!