The sorting triggers a ListChanged.Reset event, and this resets the grid and cancels the BeginUpdate.
There is another technique that you can use to freeze painting in a Windows Forms control. This technique has handled this ListChanged.reset problem in other situations.
Here is a sample. It adds a new property to a derived grid that adds a second way to freeze the screen painting through a Win32 API call. This techique is discussed in one of our Windows Forms FAQ,
http://www.syncfusion.com/faq/winforms/search/637.asp
This sample freezes painting while trying to sort an expanded grid so the expand state can be preserved during sorting. In your case, I think you can add the new property to a derived grid, and use this property instead of grid.BeginUpdate to freeze painting while you do your update.