Através dos exemplos dos usuários aqui, o uso parece eficiente quando não sabemos quantas vezes queremos rodar aquele trecho de código.
Implementando lógica de frontend e backend, o esperado é que nós saibamos o que esperamos naquele trecho de código, inclusive para testar.
Acredito que isso explica o desuso do while.
Sim, por exemplo no caso do @joaomgsa, que tinha que ler um excel sem saber a quantidade de linhas, se eu fosse aplicar isso, antes eu usaria uma lib para converter o csv em JSON, que me daria a possibilidade de usar um Map, mas provavelmente essa lib usa um while. Interessante pensar que algumas coisas podem estar sendo usadas por trás dos panos!