как указано в документации по массиву
def ++ [B>: A, That] (что: GenTraversableOnce [B]) (неявное bf: CanBuildFrom [Array [T], B, That]): То
Возвращает новую изменяемую индексированную последовательность, содержащую элементы из левого операнда, за которыми следуют элементы из правого операнда.
Возвращает новый объект. Кстати, что-то не понятно: хранится ли ссылка на элементы в предыдущем объекте или нет? Для проверки мы можем просто попробовать:
scala> val array = Array(1,2)
array: Array[Int] = Array(1, 2)
scala> val array2 = array ++ Array(3)
array2: Array[Int] = Array(1, 2, 3)
scala> array.update(0, 10)
array.update(0, 10)
scala> array
array
res2: Array[Int] = Array(10, 2)
scala> array2
array2
res3: Array[Int] = Array(1, 2, 3)
Так что это не ссылка на старые значения, а просто их копирование, и это имеет смысл, поскольку это изменчивая коллекция.