I think one missing piece of the puzzle, which is what confused Elias, is that open-paren-in-column-0-is-defun-start is not only about '(', it's about any character that has the "open parenthesis" syntax class under the current syntax tables. And in C mode, that includes '{' and '[', with the former being the important one. I think.