Well, the problem with IR is that most people I know of have multiple remotes, of which only one should actually be handled by Linux. So if "all" (well, most) remotes "just work" with Linux, too many events will be handled by the Linux apps.
From the application point of view, you are right, the application should just check for "volume up" (and any other type of event it is interested in) and do the right thing.
From the user point of view however, it must be possible to ignore some "volume up" events.
The easiest way to achieve that is to actually provide
"remote_type/vol_up" events and allow the user to tell the system to ignore (or only process) "sony_tv/*" events for example (though I'm not sure how this should work, via a userspace tools, sysfs, ioctl or whatever).
The filtering/routing to different applications is a secondary concern for me. I can solve that in other ways.