Currently, the remap function only saves a single remap for each core, which can be limiting with certain cores and controllers. As an example, the C buttons on the N64 controller are usually mapped to the second analog stick on a modern controller, which works fine for say, Super Mario 64 where you control the camera with it. But for other games that use actions on these buttons, it is suboptimal to use an analog stick. And while remapping these actions to other buttons on the controller can work very well, because every game is different in how it uses them, there's no single ideal rebind that will work for everything.
Right now, with a single remap that is always active until cleared, every game that uses a different control scheme requires remapping buttons every time you play or sticking to a more universal but arguably inferior solution. Or of course, buying a new controller, which is not cheap.
There's also cases like the twinstick on the Saturn, that internally is essentially just a regular pad but with different mappings. For games that use that, if you want to simulate it like say, with dual analog+shoulder buttons, you would have to rebind almost the entire controller, and then undo it when playing other games, and then rebind again with you to come back to it.
There's also the case of PC cores, where many people bind keyboard commands to controller, but almost every game will have different a control scheme and will require a new rebind.
A solution, if it is possible to implement, is to be able to manually save your rebinds to separate files and load them later, no automatic loading per game or anything fancy like that, as I understand it would not work with PC cores. Just a simple manual method, a submenu where you can create, load, rename and delete map files inside the core OSD, and the current "Define" and "Remap" actions will work just like it does now but will save to whatever file you have loaded at that moment.