I do think that the nwscript language has difficulty with strings for case statements.
I am just remembering back to the way SIMTOOLs did the case statement for the commands.
Basically it converted the first character of each command into an int via FindSubstring (against the alphabet)
then it used that in a case statement - which then subdivided into if statements on each individual command.
You could end up having to write more complicated code just to get the sort of coding mechanic that you want.
It does feel easier to just use const ints and name the variables appropriately.
The only issue you might run into, is accidental re-use of int values - but that is perfectly fine in coding and scripting, as long as they are only used in specific areas of functionality that prevent accidental re-use.
This is where nwscript kinda has a downfall.
ABILITY_DEXTERITY = 1;
Well...
VFX_DUR_DARKNESS = 1;
NWScript has all their consts in the same file. (NWScript.nss - or somewhere similar)
As a good practice, you should try to make sure that your constants are kept segregated and coherent as possible, not coupled to other systems that are irrelevant.
Eg: ABILITY_DEXTERITY Shares the same value as VFX_DUR_DARKNESS.
They clearly have different meanings (purpose), but their in the same file, and exposed / defined within the same scope.
NWScript.nss could be seen as a somewhat 'god file', but I suspect it was built that way for our benefit.
If you plan on re-using integer constants, I would recommend keeping constants of a specific purpose, inside a specific constants include file.
Only add it in when needed, and certainly prefix/name them appropriately.