Scala: tipos abstractos vs genéricos

Estaba leyendo Un 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: