The reason the feature doesn't get included as often is because of exactly this. Even someone who could make use of the feature, and is annoyed by the current keybindings, doesn't take advantage of re-binding. The reason it is available on video games, on the other hand, is because its necessary for controller support, which a large enough portion of the video game community uses for it to have high demand.
In-app rebinding also makes life difficult for the developer in the future, because any new feature added may have it's key rebound by some users.
Look at Emacs. Technically users can rebind things, but it's easier to learn the defaults since every other key is already bound to something else.
Generally everything is rebindable internally, but users are only offered compatibility modes with other popular software.
And discussing this reminds me how much of a pain it is. What we need is a system where we set our own defaults in an XML file or some other common format (or use a software tool to do that). Then we can select this keymap when we install applications.
For what it's worth: I use AutoHotkey (on Windows) for configuring system wide shortcuts.
Official homepage: http://www.autohotkey.com/ My own ahk files: https://github.com/philippotto/shortcut-collection
Something which really grinds my gears is when software has non-rebindable hotkeys. Why are keybinds hardcoded? We can change our controls in games from WASD to ESDF. Why can't we change our copy key in Windows from CTRL+C to CTRL+L, without using 3rd party software?
Having written my own applications on occasion, I know this isn't that difficult. So why is it so uncommon?