Когда применять arr.reduce?
Когда сочтёте нужным. Типа, подумали, и решили - здесь reduce нужен. Или не нужен. Да, подумали. Для этого у вас есть особый инструмент - голова называется.
Вы правы, reduce может делать и отображение и фильтрацию. Но в основном данную функцию применяют, когда при проходе коллекции нужно собрать определенный результат. Причем неважно какой: это может быть другой массив или объект, а может быть и примитивный тип данных типа строка или число. Все зависит от задачи
Как правильно писали выше, самый яркий пример и одновременно простой пример - нахождение суммы всех элементов массива.  Вы делаете агрегацию - то есть приведение целой системы к одному результату. 

[1, 2, 3, 4, 5].reduce((acc, item) => acc += item, 0); // 15