Mapa da matriz Scala retorna ArraySeq

Por que não posso ter parâmetros de tipo nos meus métodos de fábrica abaixo?

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.FunSuite

@RunWith(classOf[JUnitRunner])
class WhyScalaNeverWillMakeIt extends FunSuite {

  test("Array becomes ArraySeq when you least want it") {
    val arr = Array("A", "B", "C")
    def f: String => Dummy = new Dummy(_)

    val bucket = new Bucket[Dummy](arr.map(f))
//    val bucket2 = Bucket[String, Dummy](arr, f)
//    val bucket3 = Bucket[Dummy](arr, f)
    val bucket4 = Bucket(arr, f)
  }

  class Bucket[T]( val arr: Array[T] )  {/* Loads of business logic */}

  object Bucket {
//    def apply[T, U](arr: Array[T], f:T=>U):Bucket[U] = new Bucket[U](arr.map( b => f(b) ))
//    def apply[T](arr: Array[String], f:String=>T):Bucket[T] = new Bucket[T](arr.map( b => f(b) ))
    def apply(arr: Array[String], f:String=>Dummy):Bucket[Dummy] = new Bucket[Dummy](arr.map(f))
  }


  class Dummy(val name: String)
}

Se eu descomentar os métodos de fábrica emobject Bucket Eu recebo:

error: type mismatch;
found   : scala.collection.mutable.ArraySeq[T]
required: Array[T]
def apply[T](arr: Array[String], f:String=>T):Bucket[T] = new Bucket[T](arr.map( b => f(b) ))

De alguma forma, o compilador Scala ficou confuso (ou sou eu? ;-)) quando eu apresentei o parâmetro de tipo T. Talvez eu esteja fazendo algo muito errado aqui, mas não vejo por que introduzir um parâmetro de tipo significa que a função de mapa deve mudar o tipo de retorno de Array [T] para ArraySeq [T].

Eu sei que o Array é apenas um wrapper em torno do Java Array e que eu provavelmente deveria usar uma das mais sofisticadas classes Scala, como Seq ou List, mas isso ainda não explica esse comportamento estranho.

Alguém pode explicar por que isso está acontecendo e talvez também como corrigi-lo (ainda usando Arrays)?

Edit: Estou usando o scala 2.9.1

questionAnswers(1)

yourAnswerToTheQuestion