Substring tem mais funções, como o nome diz que pode ser usado para obter uma substring de uma variável.
Por exemplo
var='123456789'
echo ${var:2:4}
A saída será
3456
Ao usar o array, você precisa usar substring para acessar as variáveis do array.
Por exemplo
a[0]=0
a[1]=1
a[2]=2
echo $a
irá imprimir 0.
echo "$a[1]"
output 0 [1]
Então, acessando a variável array no local 1 da seguinte forma
echo ${a[1]}
Isso gera 1
echo "${a[@]}"
output all variable. ou seja 0 1 2
Nestes casos, substring não pode ser substituído com ""