I find that you found a good method to do what you need. The problem is that frozen columns is the new feature. After small modifications it can be used in more cases as where it currently used. The method setFrozenColumns tests some criteria and exit in some situaltion like in your case. So one should just deceive it.
I tought about your problem and now I can suggest you one more method to solve the problem. The demo, which I created for you, demonstrates this. The demo is the modification of my demo from the answer. The main part of code which solve your problem is below:
I added code from the demo to my applicaton but cb column is not froozen. I looks like code is ignored. I added alert() boxes and verified that code is actually running.
I'm no idea what I'm doing wrong. How to solve or debug this issue?
Sorry, but is my demo work correctly in your environment? If it works than you should debug your code and verify why the setFrozenColumns method still not executed. Probably you use some additional options of jqGrid which are not supported by frozen columns (see the limitations here)? For example you could uses scroll:1 (scroll:true) or something like that.