A questão central é usar a aritmética para declarar uma variável.
Substituir:
(( A[$a]++ ))
com
declare -A A["$a"]=1
E os espaços repetidos são removidos.
Parece-me ser um bug, um espaço não consegue criar a variável:
$ declare -A A; (( A[" "]++ )); declare -p A
declare -A A
Endereçando sua edição depois que postei a resposta acima:
Qual é a diferença?
Que uma atribuição declara a variável como parte da matriz:
$ unset A; declare -A A; A[" "]=1 ; declare -p A
declare -A A=([" "]="1" )
enquanto uma expansão aritmética falha para fazer o equivalente:
$ unset A; declare -A A; (( A[" "]=1 )); declare -p A
declare -A A