Juancho's assessment is correct. As it happens, I've been developing some tools for this kind of surgical advice. I think this should do the trick:
(defun my/org-checkbox-toggle-advice (orig-fn &rest args)
"Advice to move to next list item on checkbox toggle."
(my/with-advice
((#'org-update-checkbox-count-maybe
:after (lambda ()
(ignore-errors (org-next-item)))))
(apply orig-fn args)))
(advice-add #'org-ctrl-c-ctrl-c :around #'my/org-checkbox-toggle-advice)
(advice-add #'org-toggle-checkbox :around #'my/org-checkbox-toggle-advice)
The hard work here is being done by this macro:
(defmacro my/with-advice (adlist &rest body)
"Execute BODY with temporary advice in ADLIST.
Each element of ADLIST should be a list of the form
(SYMBOL WHERE FUNCTION [PROPS])
suitable for passing to `advice-add'. The BODY is wrapped in an
`unwind-protect' form, so the advice will be removed even in the
event of an error or nonlocal exit."
(declare (debug ((&rest (&rest form)) body))
(indent 1))
`(progn
,@(mapcar (lambda (adform)
(cons 'advice-add adform))
adlist)
(unwind-protect (progn ,@body)
,@(mapcar (lambda (adform)
`(advice-remove ,(car adform) ,(nth 2 adform)))
adlist))))