It is useful to understand, first, that the rules for keyword arguments accepted by generic functions are rather different and more complex than for non-generic functions, and second, why this is so.
A non-generic function is defined in one place, e.g. with a singe defun form, and its keyword processing can be determined from that single form. This remains true even if the function is redefined during run time.
A generic function is different in that it is (usually) specified by numerous defgeneric and defmethod and defclass forms. (All of these can add methods to a gf!) And methods can also be added and deleted programatically at run time. The intention of the rules is that the gf should accept a keyword arg iff there is a method willing to deal with it, and (very important) such a keyword arg should _not_ bother any method _not_ prepared to deal with it.
That's one reason why responsibility for keyword arg checking is placed upon the gf, and not upon individual method functions.