and we loose the ability to set up a constant table in the code.
The constant table is usually a bad idea, and this demonstrates why - the texture format table is another one where somehow we've been able to get away with staying constant, but I am sure issues will show up in the future involving extensions and conditional support for formats (or conflicting support from two extensions ?), which will prove that table to be insufficient as well. When I considered changing this table on AJ's request (before your patch), I started writing it as a big switch statement for that reason [ not to say I like big switch statements, but it seemed more flexible that way ].
Constant is convenient, but if it can't meet all necessary requirements, I wouldn't hesitate to drop the idea - never compromise on design in favor of C optimizations. Tomorrow's hardware will make any non-algorithmic optimizations irrelevant.