Acho que sua confusão está na palavra "referência".
Você não está referenciando a variável array após declare ; você está apenas dando o nome x .
Para fazer referência a uma variável, você precisa colocar um $ antes do nome.
Tente pesquisar na página man bash todas as instâncias de referenc e leia-as.
Quanto à segunda pergunta:
In
[[ -v myarr ]], doesmyarrmean the array ormyarr[0]?
Por teste, isso significa myarr[0] .
$ declare -p myarr
bash: declare: myarr: not found
$ myarr=()
$ declare -p myarr
declare -a myarr='()'
$ echo $myarr
$ [[ -v myarr ]] && echo is set
$ [[ -v myarr[0] ]] && echo is set
$ [[ -v myarr[1] ]] && echo is set
$ myarr+=([1]=b)
$ declare -p myarr
declare -a myarr='([1]="b")'
$ echo $myarr
$ [[ -v myarr ]] && echo is set
$ [[ -v myarr[0] ]] && echo is set
$ [[ -v myarr[1] ]] && echo is set
is set
$ myarr+=([0]=q)
$ declare -p myarr
declare -a myarr='([0]="q" [1]="b")'
$ echo $myarr
q
$ [[ -v myarr ]] && echo is set
is set
$ [[ -v myarr[0] ]] && echo is set
is set
$ [[ -v myarr[1] ]] && echo is set
is set
$