The colMenuColumnDone is called when the column is shown/hide in column menu, but it is called before the show/hide column. Also you can test this if you simple do alert in that eventn. (this is true in 5.3.1 release) To this event are passed 3 parameters and the 3 parameter is the state of the checkbox to show/hide the column.
As for recommendation, using watchpoints for jqgrid object has a serious negative impact on performance. It is better to use setters and getters, which we actually have: getGridParam and setGridParam. In setGridParam we can add a event listeners, but this is not the only way to change the grid parameter.