These days, it's mostly about style.
There was no such thing as a const variable when C was younger.
So, if you used a variable instead of a #define, there was no assurance that it wouldn't be changed by someone elsewhere, wreaking mayhem across your programme.
FORTRAN used to send even constants to subroutines by reference, and it was feasible (and painful) to alter the value of a constant like '2' to something else.
This happened once in a programme I was working on, and the only indication that something was amiss was when the programme hit the STOP 999 that was meant to finish it normally.