Conceitualmente, as opções para atribuir um valor a uma variável ou a uma constante diferem apenas de uma maneira: Um compilador daria um aviso quando você tentar reatribuir uma constante
Você está correto. Se você atribuir o valor a uma variável em vez de uma constante, ela executará o trabalho desde que você esteja tomando cuidado para não alterar o valor atribuído a ela.
Pode parecer redundante para você, por exemplo, se você estiver fazendo um programa para encontrar a área de um círculo de um determinado raio, pode escrever
float pi = 3.14
float area (float r) :
return pi*r*r
e pense que se alguém mudasse o valor de pi para algo como 2.5, então eles são realmente vítimas de sua própria estupidez.
E ninguém quer se sobrecarregar com um recurso desnecessário.
No entanto, os programadores tendem a eliminar tantos possíveis problemas futuros quanto puderem. Pode acontecer que, se o programa for grande e tiver muitos programadores trabalhando nele, alguém possa redefinir sua variável (para que funcione para eles), mas a próxima chamada para sua função que dependesse do valor correto de sua variável retornaria resultados errados.
Agora, existem duas maneiras de eliminar essa possibilidade: você pode tornar sua variável local para a função em si, mas isso resulta em redundância porque você teria que fazer isso para cada função que se refere a ela.
Ou você pode usar o recurso interessante fornecido pela linguagem de programação e declarar seu valor como uma constante para que o compilador forneça um aviso se o valor da constante for reatribuído.