во втором варианте ты больше управляешь ситуацией:
пришли данные (событие data) - конкатенируем
передача данных закончена (событие end) - возвращаем значение
в случае ошибки (событие error) - возвращаем ошибку
В первом случае - что будет в случае ошибки?
Конечно, первый вариант проще, если знаешь как он под капотом работает