Мне нравится подход 1 лучше, чем подход 2, потому что список действительно является результатом метода, который вы вызываете. Подход 1 делает это более ясным, чем подход 2.
Кроме того, подход 1 дает методу возможность вернуть неизменяемый список. Вы можете захотеть этого, если список должен быть заполнен один раз и не должен изменяться позже.
Java не является функциональным языком программирования, но первый подход в большей степени относится к функциональному стилю программирования, чем второй (в функциональном программировании неизменность и избегание изменяемого состояния являются важными идеями - и одним из важных преимуществ является то, что они создают упрощение параллельного программирования, что также полезно для нефункционального языка программирования).