If you know in advance that certain keys will never be encountered obviously you would declare an array range to suit the actual values, rather than waste memory on key ranges that are never used.
But the point is, if you use the LCL and OnKeyDown etc. you will need to use (or re-interpret) the predeclared values of VK_xxx. So why not use them from the outset rather than declare your own different enum? If you don't use the LCL, then the VK_ constants are probably less relevant, though they are based on the widely used Windows API.
How do you get the keycodes of the keys pressed by your program's users?