Scala: tipos abstratos vs genéricos

eu estava lendoUm tour de Scala: tipos abstratos. Quando é melhor usar tipos abstratos?

Por exemplo,

abstract class Buffer {
  type T
  val element: T
}

sim que os genéricos, por exemplo,

abstract class Buffer[T] {
  val element: T
}