It seems that UIO has made its way into the kernel code, so this discussion may be moot. But I just have a question: why not just require polling I/O in userspace?
If you can memory-map to RAM on the PCI bus now, you could just mmap() to a buffer under the driver's control instead. It could have not only device RAM, but also a flag for "interrupt occurred", which the application would clear, and a kernel space interrupt handler would set. You don't need a userspace interrupt handler at all.
"But that would be incredibly slow!" Yes, it would. And if you want more drivers for Linux, but don't want proprietary ones taking over, then offer a choice: userspace, closed source, and slow; or kernel space, open source, and fast. If that hardware engineer doesn't know about kernel hacking, then he should make it open source, and it will be fixed by people who know the kernel inside out. That's the idea behind an open-source project, right?
However, for those less political, UIO does seem a good solution.