¿Sobre qué itera for name in "${NAMES[@]}"?
for name in "${NAMES[@]}"
Cada elemento del array como un elemento independiente, conservando los espacios dentro de cada elemento.
Sobre cada carácter del primer nombre.
Solo sobre el texto literal NAMES.
Solo sobre los índices numéricos del array.