Front: apenas visualização, Back: Todo o resto.
existe o outro lado em que encher o back de endpoints pode te causar uma dor de cabeça devido a perda de clareza, duplicação de código, escabilidade ruim, problemas de segurança e por aí vai.
Quanto mais genérico for seu endpoint mais parâmetros ele vai ter que aceitar, mais casos de uso ele vai ter que suportar, mais complexo ele vai ficar, a lógica é exatamente o contrário.
Quando mais específico for o endpoint mais fácil vai ser a manutenção, mais leve vai ser o processamento.
Essa história de fazer um endpoint com GraphQL para escalabilidade não tem nada a ver com performance, tem a ver com hora de desenvolvimento, quando as features precisavam ser lançadas o mais rápido possível.
GraphQL serve muito bem para contexto de redes sociais onde os dados podem ter as estruturas mais variadas possíveis, e o sistema tem que se adaptar a novas variações de forma muito rápida.
Um app de controle de gastos vai ter essa complexidade e variação toda?
não seria melhor adicionar essa lógica no back? deixar o front com as manipulações de exibição?
Aqui a pergunta é: De quantos dados estamos falando?
Se for poucos: separa no front
Agora se for muitos dados teria que trazer do back só o necessário, paginado e, no mínimo, com uma rolagem infinita, onde os dados são carregados conforme o necessário.