Approximate patch, without documentation.  If this is accepted, I can write documentation too.  I submitted legal papers for FSF years ago.

    (func-arity 'car)                      (1 . 1)
    (func-arity 'caar)                     (1 . 1)
    (func-arity 'magit-log-all)            (0 . 2)
    (func-arity 'format)                   (1 . many)
    (func-arity (lambda (&rest x)))        (0 . many)

Return value is the same as with `subr-arity' except here any callable is accepted and you don't need `symbol-function' or `indirect-function'.  Autoloading is also supported transparently.

Paul