Hi! Considering the example given in https://unix.stackexchange.com/a/648243/320598 I think it may be a bug, or an inappropriately documented feature.
Basically: % x=(1 2 3) % echo "${#x[@]}"; echo "${x[@]}" 3 1 2 3 % unset x[0] % echo "${#x[@]}"; echo "${x[@]}" 2 2 3 % unset x[0] % echo "${#x[@]}"; echo "${x[@]}" 2 2 3 % unset x[0] % echo "${#x[@]}"; echo "${x[@]}" 2 2 3