Olá André, muito boa a sua pergunta porque indica que você não se preocupe apenas com a manutenção e legibilidade do seu código, mas a performance.
A primeira forma é mais segura e tente a introduzir menos bugs, porque se recalculamos tudo temos certeza que o valor total refletirá o total de itens. Porém, como você notou, há um peso computacional.
A segunda forma, a que você propõe é interessante porque manipula menos o DOM e por conseguinte torna seu código mais rápido. Daí, vou compartilhar o que o arquiteto do Facebook que criou o React (framework que faz o chat do facebook funcionar) disse em uma de suas palestras: que prefere a simplicidade no lugar da performance, mas quando a performance não tem grande impacto.
No seu exemplo, a primeira forma tente a introduzir menos bugs porque recalculamos tudo, mais lenta, mas um lento que não é percebido em termos práticos, daí a preferência por essa abordagem.
Porém, se houvesse problema de performance, aí a gente consideraria a segunda forma.
Espero ter lançado uma luz sobre a sua reflexão.
Abraço do Flávio Almeida!