Quando você usa o console Cygwin, a interpretação das seqüências de controle é feita pela DLL do Cygwin. Essa DLL, claro, só é vinculada aos programas Cygwin, portanto, um programa que não seja o Cygwin, como o Mercurial, não poderá fazer uso disso.
Então, por que funciona quando é executado em um console cmd.exe, o que não entende as seqüências de controle? Meu palpite é que o Mercurial usa a API do console do Windows quando acha que ele é executado em um console e controla sequências quando acha que está sendo executado em um terminal. Talvez isso dependa do termo TERM, então tente o que acontece se você não tiver concluído TERM.
Caso contrário, tente executá-lo em um terminal Cygwin, como mintty ou rxvt. Lá, a diferença é que as seqüências de controle são interpretadas por esses programas em vez da DLL do Cygwin.