Они на самом деле не одинаковы - это просто плохо отформатированное сообщение об ошибке.Scala 2.10 будет иметь лучшее сообщение об ошибке.
По сути, один - кортеж, а другой - список аргументов с двумя параметрами.В частности:
words.zipWithIndex // Creates a tuple
(x: String, index: Int) => index % 2 == 0 // is a function with two parameters
Вы можете исправить это двумя способами:
filter((t: (String, Index)) => t._2 % 2 == 0) // use a tuple as parameter
filter { case (x: String, index: Int) => index % 2 == 0 } // use pattern matching