When you use the formater the possible values returned from the server (or array) can be true/false, yes/no, 1/0, on/off – I see you use -1 which will retun unexpected results. Also a good idea in this case is (not documented – sorry) to set a editoptions values for the checkbox instead that they is not editable.
Maybe I need to change the unformat function (wich is used in getCell) for checkbox the same way as for formatter.