A resposta é
> print ${(j., .)${:-${^words}yeah}}
fooyeah, baryeah, bazyeah
ou
> print ${(j., .)${:-{foo,bar,baz}yeah}}
fooyeah, baryeah, bazyeah
sem usar variáveis em tudo
A parte crítica é ${name:-word}
. É explicado em o manual .
${name-word} ${name:-word}
If name is set, or in the second form is non-null, then substitute its value; otherwise substitute word. In the second form name may be omitted, in which case word is always substituted.
Obrigado ao phy1729 do #zsh por apontar isso para mim:)