Вывод типа, к сожалению, плохо работает с параметрами типа (такими как C), которые ограничены (типы, которые содержат) другими параметрами типа в списке параметров того же типа (здесь, A).
Версия, которая кодирует ограничение с использованием неявного аргумента, не страдает от этого ограничения, поскольку ограничения, налагаемые имплицитами, решаются отдельно от ограничений, налагаемых границами параметров типа.
Вы также можете избежать цикла, разделив тип xs на конструктор типов, который абстрагируется над коллекцией (CC), и (правильный) тип (A), который абстрагируется над его элементами, например:
scala> implicit def view[A, CC[x] <: Seq[x]](xs: CC[A]) = new { def bar = 0 }
view: [A, CC[x] <: Seq[x]](xs: CC[A])Object{def bar: Int}
scala> view(List(1)) bar
res0: Int = 0
Подробнее о таких типах, как CC, см. Что такое тип с более высоким родом в Scala?