Для нового массива используйте const result = [...first, ...second]; или const result = first.concat(second);. Элементы второго списка окажутся после элементов первого, а исходные массивы не изменятся.
Оператор плюс не объединяет массивы как списки: он может преобразовать их в строки и соединить текст. Поэтому дальнейший вызов метода массива у такого результата не работает ожидаемым образом.
Повторяющиеся значения сохраняются. Если позже понадобится удалять повторы, это отдельная задача с собственным правилом равенства. Копирование поверхностное: вложенные объекты остаются теми же ссылками. Новый внешний список не означает независимые копии всех его элементов. Для вашего случая простого объединения без изменения вложенных данных этого достаточно.
Ответить на вопрос