It doesn't seem right for code looking as innocent as $((a[$i])) or $((a["$i"])) to allow running arbitrary commands for some value of i, that are no even that clever:
$ i='$( echo >&2 an arbitrary command )';: $((a["$i"])) an arbitrary command $ i='"$( echo >&2 an arbitrary command)"';: $((a[$i])) an arbitrary command