Quando o .empty deve ser usado em relação à instância vazia de singleton?

Trabalhando com coleções no Scala, é comum precisar usar a instância vazia da coleção para um caso base. Como as instâncias vazias padrão estendem a classe de tipo de coleção com um parâmetro de tipoNothing, às vezes, derrota a inferência de tipo para usá-los diretamente. Por exemplo:

scala> List(1, 2, 3).foldLeft(Nil)((x, y) => x :+ y.toString())
<console>:8: error: type mismatch;
 found   : List[String]
 required: scala.collection.immutable.Nil.type
              List(1, 2, 3).foldLeft(Nil)((x, y) => x :+ y.toString())

                                                  ^

falha, mas as duas correções a seguir são bem-sucedidas:

scala> List(1, 2, 3).foldLeft(Nil: List[String])((x, y) => x :+ y.toString())
res9: List[String] = List(1, 2, 3)

scala> List(1, 2, 3).foldLeft(List.empty[String])((x, y) => x :+ y.toString())
res10: List[String] = List(1, 2, 3)

Outro lugar em que me deparei com um dilema semelhante é na definição de parâmetros padrão. Estes são os únicos exemplos que eu conseguia pensar de cabeça para baixo, mas sei que já vi outros. Um método de fornecer a dica de tipo correta é preferível ao outro em geral? Existem lugares onde cada um seria vantajoso?

questionAnswers(1)

yourAnswerToTheQuestion