Como você decide o que entra em um módulo conforme o app cresce?
Pela fronteira que muda junto, e pelo tempo de build. Um módulo de feature que pode ser construído e testado sem o resto se paga em velocidade de compilação e em deixar explícita a direção das dependências. Dividir por camada — um módulo com todas as view models — geralmente produz módulos que sempre mudam juntos, ou seja, o custo sem o benefício.