Я попробовал несколько эмуляторов терминала под Linux, а именно встроенную консоль, xterm, urxvt, vte (gnome-терминал и друзья), konsole, терминологию (из просветления), kitty, pterm (из putty) и st (из suckless). Все они ведут себя так, как вы говорите, iTerm2, и в отличие от Mac по умолчанию Terminal.app.
Это говорит о том, что iTerm2 верен, а Terminal.app ошибочен.
Если у вас есть другие символы, которые TAB пропускает, например, "er" здесь:
echo -e "qwer\r\033[42mas\tdf"
вы также увидите, что эти символы остаются нетронутыми и не заменяются пробелами и не перекрашиваются на новый фон. (Я пробовал это в большинстве эмуляторов, перечисленных выше, не во всех. Кроме того, у меня нет доступа к Mac. Я хотел бы услышать, что Terminal.app делает здесь.)
Это потому, что TAB не печатный символ. Это управляющий символ перемещения курсора, аналогично другим escape-последовательностям.