во первых вы не создаете польностью иммутаабельные данные, вы копируете все элементы, кроме того, который вы должны поменять. Тот же который меняется - тот и нужно создавать заново. Копирование по ссылке операция не дорогая и памяти расходуется не много(а сама ссылка весит всего ничего).
во вторых, не все же массивы разом в приложении меняются? нагрузка постепенная
в третьих, js умеет удалять уже не нужные массивы(сборщик мусора)
в четвертых, если вы не будете делать этого, то тогда, чтобы определить изменения данных, придется выполнять глубокое сравнение каждого элемента массива и каждого его свойства - и вот это действительно медленная операция с кучей циклов