Sales effectiveness is measurable. Giving them incentives motivates them to push the boundaries and develop themselves more and work harder and they know it.
Programmer (and most other jobs) effectiveness is based on whether they want to work or waste time at the desk, and it's generally immeasurable because you can't put their effectiveness on a chart unless someone's full time job is to watch them type.... so an effective programmer is just doing time consuming labour work and incentives will have no effect on them because unless you're watching them type, you cannot judge whether they achieve the goal or not. They're either on full effectiveness when working, or zero effectiveness when not.
So I agree with Tony. Equal perks for all, and perhaps a major project based incentive based on company profit.
If they're whinging about the sales people getting bonuses it's because they don't get it. They selfishly believe they're smarter and more important than every sales person. Tell them that becoming a sales person is actually a promotion and elite social skills are more sought after than their technical skills. It's like complaining that the CEO earns more than them when the CEO only makes 3 decisions per day... while they're making a decision every 3 minutes of the day writing code or dealing with customers.