Зачем в JS постоянно возвращают функции которые возвращают значения?
Вы не возвращаете функцию, вы возвращаете результат reduce
т.е. получается, функция sum делает суммирование аргументов, реализация которой состоит из вызова reduce. Чтобы каждый раз не писать этот reduce, можно теперь просто вызывать эту функцию. Так проще.
По вашему примеру вам ответил Владимир. А вот простой и наглядный пример по вопросу "зачем в js в функции возвращают другие функции":const VAT_RATES = {
  FR: 20,
  GB: 20,
  IT: 22,
  PL: 23,
};
const createWithVAT = vat => price => price + price * vat / 100;

const currentVAT = VAT_RATES.GB;
const withVAT = createWithVAT(currentVAT);
const price = 250;
const totalPrice = withVAT(price);

console.log(totalPrice); // 300