Because if function foo's third flag parameter supports FOO_ENABLE_FEATURE_X starting from 2.31, and a program only occasionally calls foo with this flag, there is no good way to detect this incompatibility on a 2.30 system at link time.
The restriction is only annoying because there is no way to trivially link against an older "minimum requirement" ABI.
> the restriction is, in itself, good.
Why do you consider this a good restriction?