Есть исходный объект: obj1 = {a: 1, b: [], c: 'str'}
Нужно в него залить все свойства второго: obj2 = {a: 2, c: 'new str', d: 123}
Чтобы получился либо {a: 2, b: [], c:'new str'}
либо {a: 2, b: [], c:'new str', d: 123}
В вашем случае вы мутируете изначальный объект и это будет работать, но до тех пор пока мы случайно или намеренно не изменим данные в первом объекте, и в итоге у нас что-то пойдет не так, лучше уж возвращать именно новый объект.