Como comentei, sua primeira expansão não faz nada. A string literal (" ")
não está na string, então nada é removido. Então, a segunda expansão remove todos os caracteres que não são uma letra ou um espaço. É por isso que "CD" fica. Não há nada em seu código que diminua o "d" em "CD".
Se você deseja remover todos os bits entre parênteses:
shopt -s extglob
NewDirectoryName='Dio - We Rock-Greatest Hits (2CD) (2004)'
NewDirectoryName=${NewDirectoryName//\(*([^\)])\)}
# ...................................aa........cc
# .....................................bbbbbbbb
# (a) a literal open parenthesis
# (b) zero or more non-close-parenthesis characters
# (c) a literal close parenthesis
echo ">$NewDirectoryName<"
>Dio - We Rock-Greatest Hits <
Para remover espaços em branco à direita:
NewDirectoryName=${NewDirectoryName%%+([[:blank:]])}
Isso usa padrões de "correspondência estendida de padrões", documentados no final desta seção do manual: link