The proposal is to have a new option under "Extension Options" on each extension page, "Can set Call Forwarding for Other Extensions", with a dropdown (Enable/Diasable). The setting would be saved in a flag in the database specific to that extension (and, in my opinion, the default should be "disable", although that could be modified in General Settings if you put an option to choose the default there).
Then the output code for the *72, *90, and *52 options would be modified to check the flag and behave accordingly. As an example, the first lines of the generated code for *72 would be changed as follows:
[app-cf-on]
include => app-cf-on-custom
exten => *72,1,Answer
exten => *72,n,Wait(1)
exten => *72,n,Macro(user-callerid,)
exten => *72,n,Set(fromext=${AMPUSER}) <===== NEW LINE
exten => *72,n,GotoIf(..... cannot set CF .....?startread) <===== SEE NOTE BELOW
exten => *72,n,Playback(call-fwd-unconditional)
exten => *72,n,Playback(please-enter-your&extension)
exten => *72,n,Read(fromext,then-press-pound,,,,)
exten => *72,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})})
exten => *72,n,Wait(1)
exten => *72,n(startread),Playback(ent-target-attendant)
Adding the two new lines noted above should be sufficient. The second one would have to contain a conditional based on the value of the database setting for the calling extension - if the extension is not allowed to change Call Forwarding settings for other extensions (which ought to be the default), then the five lines that collect the "from" extension are skipped. The same two new lines would also be added to the generated code for *90 and *52.
If for some reason this cannot be done at the extension level, then at least there should be a setting in the General Settings that would apply to all extensions. In many installations it's just not desirable to give users the ability to change call forwarding settings for other users.