I think the main point of the question is not to optimize allocation or avoid using collections. Point is to use the lower level array for the majority of the workload and then only wrap it into a collection as the last step - instead of working through the wrapper all the time.
I read such claims a few times in the internet, with some benchmarks to prove it. I never tried to test this myself, but the explanation actually makes a lot of sense. Sequences add overhead, they are complicated and can’t be inlined. Loops are obviously simple to the JVM and can be easily optimized. If Kotlin compiler will be ever able to fully inline sequences to produce a single loop with just operations inside, that will be for sure better. But for now it generates a loop with a chain of calls between operators. And apparently, this is generally slower than going multiple times in a loop.
See for example: Sequences and Inlined Lambdas , but as said above, I think I saw other similar discussions either here, on Stackoverflow or maybe Kotlin bugtracker.
Of course, there are cases where sequences are better, but speaking about the general superiority or about the default approach which we should choose, the answer is not that simple.