Scala: Tipos abstractos vs genéricos

estaba leyendoUn recorrido por Scala: Tipos abstractos. ¿Cuándo es mejor usar tipos abstractos?

Por ejemplo,

abstract class Buffer {
  type T
  val element: T
}

más bien que los genéricos, por ejemplo,

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