I think Odersky himself said that they aim for API's to be functional but internal code is what is most optimal for a specific implementation. So you probably should not search Scala library internals for "good use of Scala" or "great examples of FP".
Using mutable state to hold indexes (for example) is also really error-prone. So you should aim to use operations to whole collections (filter/map/flatMap etc) so you never need to worry about stuff like "index out of bounds". Still, these operations often cause lot's of temporary/intermediary collections to be created, and so they cause extra garbage collecting. This usually doesn't matter for 99% of programs but again, these are optimized as much as possible inside Scala library internals.
So yes, there's a place for everything but practicing to "survive" with as little mutable state as possible is good practice for single-threaded programs too, because of fewer possible places for bugs, easier testability, better readability.