Let's also consider it like this: `subr-arity' exists. But it has extremely narrow and non-obvious field of use. Compare:
(subr-arity (symbol-function 'car)) => (1 . 1)
(subr-arity (symbol-function 'caar)) => eval: Wrong type argument: subrp, #[257 "@@" [] 2 2409164]
And to make it even weirder (from `dash.el'):
(defalias '-first-item 'car
"Return the first item of LIST, or nil on an empty list.")
(subr-arity (symbol-function '-first-item)) => (wrong-type-argument subrp car)
What if I use `subr-arity' for whatever reason in a case where it works, but in the next version Emacs moves the function from `.c' to `.el' and it ceases to be a built-in?
Paul