As I'm building my own controller, I can only comment on what I looked for (and didn't find). I'm only really interested in a 2-player setup, and I'm building in a keyboard drawer (a quasi-clever hide-away thing). So I need the basic support for two players. For 100% compatibility (especially given than many MAME computers are hand-me-downs), as well as latency issues (my real job is doing digital radio control stuff, latency matters), I want PS/2 interfacing, so that's three PS/2 ports: one in, two out.
For each player, I have a joystick and 8 buttons. All these need to be totally independent, and if possible, interrupt driven, though polling will probably work.
Next, I like pinball games, so that's two more buttons, for flippers on the side.
Now, for the non-gaming buttons, I have real coin drops, player 1/2 select, a pause button, a "cheat" coin drop, etc. So I put in 8 buttons that might block each other, but have no effect on the gaming buttons. One of these could function as a shift, if I decide that's useful.
The kicker was the opticals... I love tempest. I had to have a spinner, and if a spinner, why not a trackball too. So my controller supports one each of these. To do these right, you either need wicked fast polling or hardware counters, or you'll get aliasing (the ball/spinner going backwards, that old "wheel on film" thing). So I'm doing these in hardware. I can't comment on the performance of other optical interfaces for MAME cabinets, but pretty much every mouse chip is not going to sample fast enough.
Cost wise, I didn't do this to save money, really. But I'm coming out at about $20-$25 each to build six controllers. Two are used immediately -- I'm doing this with a friend of mine (I'm doing the HW and firmware, he's providing the MAME on Linux setup).
Hopefully I haven't missed anything...