I thought so too, but in fact there is. To wit, bash(1):

> @ Expands  to  the  positional  parameters,  starting from one.  When the expansion occurs within double quotes, each parameter expands to a separate word.  That is, "$@" is equivalent to "$1" "$2"  ... 

So whenever you pass more than one file to it, [ complains about too many parameters.