There seems to be a bug that if an array variable with a name matching one of the special single-character variables exists, then that variable is used during substring expansion and parameter transformation.
There is also a potential issue with namerefs, in that they allow creating/modifying variables with invalid identifiers if a variable is defined first and subsequently given the nameref attribute, which is how the above behavior can be uncovered.
set -- 1 2 3
echo ${@@A}
echo ${@:0}
ref=@
declare -n ref
ref=(X)
echo ${@@A}
echo ${@:0}