В крайнем случае можно определить команду \? и при появлении переноса вручную вставлять её перед тем символом, который нужно продублировать:
\def\?#1{#1\nobreak\discretionary{}{\hbox{$\mathsurround=0pt #1$}}{}}
$h_1(y,M)=(h_2y,M\?\cap C_2)$
Это, конечно, несколько неудобно, тем более, что при изменении текста абзаца переносы могут "переехать" в другие места, и придётся просматривать результат компиляции, чтобы вставить команду в новых местах (в старых местах можно не удалять, так как команда не дублирует символ, если переноса нет).
P.S. Недавно столкнулся с тем, что пакет breqn несовместим с командой \binomial.