Passar o viewModel via parametro do composable é uma boa prática.
Pelo que entendi na doc, não seria...
"Aviso: não transmita instâncias do ViewModel para outras funções de composição. Fazer isso une a função de composição ao tipo do ViewModel e o torna menos reutilizável, além de mais difícil de testar e visualizar. Além disso, não haveria uma Única fonte de informações (SSOT, na sigla em inglês) que gerencia a instância do ViewModel. Transmitir o ViewModel para baixo permite que vários elementos de composição chamem funções do ViewModel e modifiquem o estado dele, o que dificulta a depuração de bugs. Em vez disso, siga as práticas recomendadas de UDF e transmita apenas o estado necessário. Da mesma forma, transmita os eventos de propagação até que cheguem à SSOT de composição do ViewModel, que gerencia o evento e chama os métodos correspondentes."
https://developer.android.com/topic/architecture/ui-layer/stateholders?hl=pt-br#business-logic
Caso eu tenha entendido certo, existe algum cenário, ao qual se faz necessário passar o viewModel por parametro?