Parece que este é um caso em que colocá-lo em uma variável ajuda primeiro. Isso funciona para mim tanto em zsh quanto em bash:
pattern='^iTerm|Apple_Terminal$'
if [[ "$TERM_PROGRAM" =~ $pattern ]]; then echo apples; fi
(Nota: eu adicionei âncoras ao padrão, para evitar correspondência de coisas como "not_iTerm".)