Very interesting comparison, thanks for pointing out the advantages / disadvantages of the different implementations.
I can see why the corner cases of CanBuildFrom are perceived as very troublesome, but I have to say that after working with Scala for many years now, this has never been an issue in practice.