A expansão rápida não é recursiva. Você tem %1v no seu prompt, então o conteúdo de $psvar[1] é inserido no seu prompt.
Em vez de colocar diretivas de expansão imediatas em $psvar , coloque o conteúdo do prompt. Insira as seqüências de escape do terminal para mudanças de cor. Você pode usar colors para isso.
autoload -U colors
colors
… {
psvar[1]="$fg[green]$branch$fg[default]"
}