Você pode alterar esse comportamento definindo a variável de ambiente GREP_COLORS
:
export GREP_COLORS=ne
echo -e "ab\rc" | grep --color=always "c"
Na página grep
man:
ne Boolean value that prevents clearing to the end of line
using Erase in Line (EL) to Right ([K) each time a
colorized item ends. This is needed on terminals on
which EL is not supported. It is otherwise useful on
terminals for which the back_color_erase (bce) boolean
terminfo capability does not apply, when the chosen
highlight colors do not affect the background, or when EL
is too slow or causes too much flicker. The default is
false (i.e., the capability is omitted).
Em primeiro lugar, é feito para definir o fundo do restante da linha para a cor correta, caso ela tenha sido alterada anteriormente (embora, por padrão, não seja; alguém pode configurá-lo para fazer isso em seu próprio configurações).
Você também pode querer jogar com as outras opções que podem ser definidas em GREP_COLORS
; veja a man page para detalhes completos.