You already have this case:
} else if(GL_SUPPORT(NV_REGISTER_COMBINERS) &&
GL_SUPPORT(NV_TEXTURE_SHADER2)) { return &nvts_fragment_pipeline;
Well, that is selecting the fragment pipeline implementation, which does more than just picking a single state. It's mainly for the fragment_enable() callback. Of course I could handle all the code choosing using one table with many different lines with extension information. I don't think that is useful though.
The difference between the pipeline interface selection and the state table extension information is that the pipeline implementations have entirely different codepaths(There's little in common between the nvts and atifs codepath, for example), while the per-line extension selection cares about minor differences in an otherwise consistent object(e.g. do we need NP2 fixups or do we not. This doesn't turn the vertex pipeline implementation upside down like choosing between glsl or fixed function does)