So long as the keys themselves- edited in any way does not give an advantage, overall to any one method, any way is okay.
Example of doing it wrong: In T:A the quick weapon switch binding has a delay where using 1 and 2 to switch has less of a delay. Obviously anyone who wants to play tryhard will use number keys or a macro that uses the number key press switch method. Slight differences like this can be game ruining.
Additional: Payday: The Heist is an example of one of the key binding features that I loathe. Want to rebind Q to something? Nope it's in use by another key. Try to rebind what's using Q after you track down where it is in the keybinds? Nope the key you want to change it to is in use. Oh you want it to be tab? Sorry that is system reserved. Don't have an American Standard keyboard? Well you're entirely screwed~
Please don't do this- don't swap them either. Just let users set their keys to whatever they desire and let them know if they have something unbound (that is important like jump, fire, roll, burst, move backwards, etc.) and ask if that is okay with a LARGE confirmation dialogue.
As far as features I wish games had, that is a can of worms indeed.
Something from fighting games that has really helped me improve is in single player training mode, for practice, I would record myself doing a series of moves/combo in GGXX^core and BlazBlu then have the second player do it, allow it to connect and than as the first player I would try to cancel, perfect block, counter out of it.
Being able to do something like that, at least for the movement path, of a bot for practice would be awesome. Rather than- as in T:A's training map- just having predefined paths for NPC's to roam and respawn upon death.
I know this would be along the lines of demos so it's down the road.