A solução foi mudar:
info=$(__git_info) && printf '\e[30;43m%s' "$info"
para
info=$(__git_info) && printf '\e[30;43m%s' "$info"
Isso ocorre porque o bash substitui internamente os caracteres especiais solicitados [e] por ASCII 1 e 2 antes que minha função __git_status seja executada.