>15
んー、なんか分かったような気もする。

ソース見ると、
def flatMap[B, That](f: A => Traversable[B])(implicit bf: BuilderFactory[B, That, This]): That = {
val b = bf(thisCollection)
for (x <- this) b ++= f(x)
b.result
}
となってるから、BuilderFactory#applyの返値(最初の例だとMapBuilder)に
+=で要素を足していって最後に変換して返してるんだな。

コンソールで試してみるか、ソースを丁寧に追えば一応分からん事もないけど、
APIドキュメント見た時に、返ってくる型が分かりにくすぎないか? これ。