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!