Касаемо immutable массивов – в Scala их нет.
Есть immutable List. Этот List заточен на добавление и удаление элементов в начале списка – head. И если вы делаете map или filter списка – новый список формируется в том же "оптимальном" порядке.
В таком случае никакого перерасхода памяти и нагрузки на GC по сравнению с Java LinkedList нет: при добавлении элемента создается НОВЫЙ объект List со ссылкой на новый элемент (head) и ссылкой на прежний список (tail). Старые листы в деле. Каждый новый лист – объект из всего двух референсов.