Можно сделать <internal_replication>false</internal_replication>, тогда Distributed-таблица будет отправлять данные инсёртами на все реплики, и значит на всех репликах сработают MV. Другое дело, что, видимо, придется отказаться от репликации, и будут обычные таблицы MergeTree.
У меня была похожая задача и я сделал так (2 шарда по 2 реплики, к примеру 4 сервера: A1 A2 и B1 B2):
1) выставляем <load_balancing>in_order</load_balancing>
2) создаем MV только на первых репликах в конфиге (на A1 и B1)
3) вставляем данные в локальные таблицы на самих репликах A1 и B1, а не в Distributed-таблицу. Данные приезжают только на A1 и B1, MV заполняются, на A2 и B2 данные уезжают по репликации.
В случае, если перестанут работать реплики A1 и B1, я остановлю заливку, пересоздам MV на A2 и B2, укажу их первыми в конфиге, запущу наливку. Это ручная процедура, но в моем случае это некритично.
Это криво, но у меня не получилось создать тогда реплицированные MV, уже не помню почему. Видимо, надо будет попробовать еще раз.