Проблема редьюса в сложной к осознанию механике аккумулятора. Она уникальная и (вроде)вообще нигде больше не повторяется в стандартном синтаксисе. Ее всегда тяжело компилировать в голове, думать как он менятеся, как возвращается.
Еще в языке есть switch…case, который мы тоже стараемся избегать. Просто из-за странного синтаксиса и поведения с break. Там без гугла иногда и не вспомнишь где две точка, а где скобки ставить
Плюс почти всегда мы читаем чужой код «по диагонали». Фактически код мы читаем сильно быстрее, чем текст. И вот когда у тебя в таком беглом осмотре появляется reduce — всегда секунд на 10 останавливаешься и втыкаешь как это работает)