concordo com o ponto central, e queria acrescentar o outro lado dele: nem todo rng precisa ser seguro, mas todo rng precisa ser honesto sobre o que é.
eu mantenho um app de sorteio — número, dado, cara ou coroa. ele usa o Random() comum do dart, que é pseudoaleatório e previsível pra quem quiser prever. e está certo assim: é entretenimento, ninguém está protegendo carteira com aquilo. o que eu não faço é escrever "verdadeiramente aleatório" ou "criptograficamente seguro" na descrição da loja, porque aí eu estaria vendendo uma garantia que o código não dá.
em dart a separação é a mesma que você mostra no js: Random() é o previsível, Random.secure() puxa do csprng do sistema. no meu caso a decisão que importou não foi qual dos dois usar, foi descrever direito qual deles está ali.
pra gerador de senha, concordo integralmente: ali só o seguro serve.