Você tem toda razão, esse tipo de mudança é custosa, então é importante avaliar todo o contexto e fluxo para entender se faz sentido ou não, logo, vai de caso a caso.
1 -> Melhor é subjetivo, não é possível avaliar com a solução suprema, pois cada caso vai exigir peculiaridades, portanto, pode ser classificada como uma solução recomendada pela documentação, você pode conferir mais a partir desta fonte.
2 -> Perfeita pergunta! Tudo vai depender da estratégia que fizer nesse fluxo, existem implementações de APIs que usam versões de dados para devolver apenas um diff (apenas o conteúdo diferente/novo do que já existe), dessa forma, você pode indicar a versão dos dados que tem e a API usa esse parâmetro verificar se tem algo novo e devolver apenas o que é novo.
Sobre recarregar a página por solicitação, você pode até mesmo considerar algumas implementações do RecyclerView que usa um DiffCallback para substituir apenas o conteúdo novo, como é o caso do ListAdapter
ou o PagedListAdapter
que é vinculado com o Archictecture Component Paging
.
[]s