I guess it’s even more general than just list assignments. See also below problems with declare:
$ declare -n ref=var[123]; unset ref; declare ref=; declare -p ${!ref}declare -- var[123]="123]" $ declare -n ref=var[123]; unset ref; declare ref+=; declare -p ${!ref}declare -- var[123]="23]" $ declare -n ref=var[123]; unset ref; declare +t ref; ref=X; declare -p ${!ref}declare -- var[123]="X" (The +t above can be replaced with any other flag)