I had the same thought about Lisp when I first saw this
post, but after looking around a bit, I wasn't able to find
any way to do this properly in Common Lisp. (This isn't to say
that there's not one; just that it's not immediately obvious
to me.) With macros one can specify a &whole parameter to
grab the argument list, but that's not valid for functions.
And for functions one can start off the argument list with
a &rest parameter which will grab the entire list of arguments,
but then you can only use &key and &aux parameters afterward,
no normal or &optional ones.
Of course, this may be a limitation of Common Lisp only (or,
as I said, maybe not; I may just be ignorant); I don't really
know any other Lisps well enough to speculate.