The meaning:
A1 is the nearest common ancestor of A and supplied argument type.
The purpose:
since List is declared as List[+A] where +A means "covariant on type A", using A as an argument type is not allowed:
scala> :pa // Entering paste mode (ctrl-D to finish) class List[+A] { def m(x: A) = x } // Exiting paste mode, now interpreting. <console>:15: error: covariant type A occurs in contravariant position in type A of value x def m(x: A) = x
UPDATE
Naive explanation why not (just a guess, it's hard to prove since compiler won't allow it):
class List[+A] { def m(x: A) = x } class Fruit class Apple extends Fruit class Pear extends Fruit // list is covariant, which means // List[Fruit] is a supertype of List[Apple] val l: List[Fruit] = new List[Apple] // i.e. l.m has to accept Fruit l.m(new Pear) // Apple?
in reality:
class List[+A] { def m[A1 >: A](x: A1) = x } ... l.m(new Pear) // Fruit, the nearest common ancestor of Apple and Pear