Измените свой код следующим образом:
e.Row.Attributes.Add("onclick", string.Format("document.getElementById('{0}').checked = !document.getElementById('{0}').checked; {1}", checkbox.ClientID, ClientScript.GetPostBackEventReference(checkbox, "")));
Полагаю, что CheckBox управляет проверкой предыдущего состояния при обратной передаче и, если оно такое же, как и раньше, метод RaisePostBackEvent не срабатывает.