As chaves explicitamente denotam o início e o fim da sintaxe do parâmetro, caso contrário, não há diferença. Isso faz com que certas declarações não sejam ambíguas, por exemplo:
$ foo=bar
$ echo "$fooa" # Is this $foo + a, or $fooa?
$ echo "${foo}a"
bara