Vale notar que, em muitos contextos, uma vírgula final é aceitável em tal lista. SE uma vírgula final é aceitável, a maneira mais fácil de lidar com a substituição é printf :
some-command "$(printf %s, a{b,c,d} )"
(Onde some-command é um comando que é executado em uma lista separada por vírgula e não se importa com uma vírgula final).
Na verdade, mesmo que você não tenha uma vírgula à direita, use printf ; você só precisa especificar o número de argumentos que espera, o que torna mais desajeitado para listas muito longas:
some-command "$(printf %s,%s,%s a{b,c,d} )"