Here is the code the DropDown GridListControl uses.
int sbWidth = grid.VScroll ? SystemInformation.VerticalScrollBarWidth : 0;
int width = grid.ColWidths.GetTotal(0, grid.ColCount)+2;
if (width < grid.Width-sbWidth)
grid.ColWidths[grid.ColCount] += grid.Width-sbWidth-width;
sbWidth is the scrollbar width, width is the sum of the colwidths with a +2 fudge factor (for borders). This +2 might be what the previous code was missing. The if statement hadles the case when the sum of the columns is less than teh client width. In that case it makes teh right column the exact size to fill the client width.