Не совсем согласен, возвращается копия данных с минимальными изменениями в свойствах, иначе не было бы смысла в применении spread/Object.assign, поправьте, если ошибаюсь.
Смысл в нашем удобстве, а минимальные или нет изменения неважно, стейт всегда получает новое значение, объект или массив