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)
