Even if it is discriminatory, it's perfectly legal in most states (only a few states ban fat-descrimination). Even in states in which it's not legal, if a company can rationalized the discrimination as a requirement of the job they're protected.
Ultimately though I think it's important to realize that this is a policy to benefit the company, not the employee and it needs to be seen as such.
We know that poverty contributes to obesity, and that grocery store employees aren't well-paid. Wouldn't the overweight employees benefit more from the extra savings on healthy food?
Do "incentives" for health really work? Especially when they're based on rewarding certain states of health, not improvement in health states. Reinforcing thinness, doesn't necessarily reinforce weight loss. Reinforcing non-smokers, doesn't necessarily reinforce smoking-cessation.
Rewarding the wealthy sure doesn't help poor people become wealthier, and I think some of these health incentives work much the same way. They don't help people find the tools to become members of the elite club that's being rewarded.
I'm not arguing that the companies don't have the right to create such policies, I just don't think they have the effect the companies claim they're trying to encourage. I think it's more about saving money than helping people. Even when the intentions are good, it seems the policy makers don't understand the problems very well.
I worked for a big company that tried incentives for non-smokers, but it wasn't effective in creating more non-smokers. The "prizes" just weren't big enough to tempt smokers into quitting (or they didn't see it as doable). However, when they added quit-smoking incentives, and made smoking more inconvenient at work (the only smoking areas were in the parking lot in a designated shelter - employees called it the butt-hut), that helped. My sister still works there and they recently added a smoking ban on the entire property (including in your car, in the parking lot. If you wanted to smoke you have to do it off-property on your lunch hour).