After reading the docs it seems to me as it does the same but I am sure I missed some point.
The old proposal in Advanced Codec Negotiation (ACN), part of Asterisk 18 projects (sorry, I can only post 2 links) suggests 4 settings (which would correlate to the codec_prefs_* settings, but the names would rather fit xxx_call_offer_pref naming.
If I recall correctly, the two options are legacy from initial development that got released and things were further refined and expanded to the 4 options.