Dzieje się tak dlatego, że zapis:
(total, item)=> total += item
powoduje w każdej iteracji zwrócenie jakieś wartości, która jest totalem dla następnej iteracji.
Zapis taki jest tożsamy z:
(total, item)=> { return total += item; }
gdyż przy braku nawiasów {} domyślnie jest jakby wstawiane return.
Jeśli natomiast dodajesz nawiasy, ale nie dasz jawnie return to każda funkcja w JS niejawnie zwraca undefined, czyli Twój drugi przykład robi tak naprawdę coś takiego:
(total, item)=> {
total += item;
return undefined;
}
Jeśli chcesz wykonać w arrow function więcej operacji to dajesz klamerki ale musisz pamiętać o jawnym return.