${array[@]}
is syntax that's only meaningful for arrays; a regular string can act like an array of length 1, but that syntax isn't implemented for positional parameters because there's no reason for it to be: Because a positional parameter cannot be an array, there is no possible valid, useful meaning "${1[@]}"
could have as distinct from the meaning of "$1"
or "${1}"
.
Being parsimonious with syntax extensions leaves currently-invalid syntax available for future extensions to give meaning to; if bash had defined meanings for all possible syntax, there would be no way to implement new extensions without breaking backwards compatibility. It is thus good language design[1] to avoid defining syntax that has no valid use.
[1] - Three words rarely used in that order to refer to bash!