The answer is yes, and the reference variable needs to be a nameref for it to be used with arrays:
declare -A FIRST=( [hello]=world [foo]=bar )
declare -A SECOND=( [bonjour]=monde [fu]=ba )
#### ordinary variable assignment does NOT work
declare any_var=FIRST
echo -e '${any_var[@]}:' "${any_var[@]}"
echo -e '${!any_var[@]}:' "${!any_var[@]}"
echo -e '${#any_var[@]}:' "${#any_var[@]}"
#### nameref works, via 'declare -n' or 'local -n'
declare -n arr_ref=SECOND
echo '${arr_ref[@]}:' "${arr_ref[@]}"
echo '${!arr_ref[@]}:' "${!arr_ref[@]}"
echo '${#arr_ref[@]}:' "${#arr_ref[@]}"
The result:
ordinary variable assignment does NOT work
${any_var[@]}: FIRST
${!any_var[@]}: 0
${#any_var[@]}: 1
nameref works, via 'declare -n' or 'local -n'
${arr_ref[@]}: monde ba # values of the associative array / map
${!arr_ref[@]}: bonjour fu # keys of the associative array / map
${#arr_ref[@]}: 2 # size of the associative array / map
See https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameters
Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted array variables.
Meanwhile, variable indirection, or more correctly indirect expansion, which also uses the exclamation point (!), it requires the variable or parameter to be NOT a nameref:
If the first character of parameter is an exclamation point (!), and parameter is not a nameref, it introduces a level of indirection.