"It's a private company. There is nothing wrong with this."
I agree completely - and I'm a smoker.
I think any private company should be able to hire/fire anyone of its choosing for any reason it chooses. Again, it is a PRIVATE company.
I knew there had to be folks like you out there! :-)
The fact that it's a private company does not give it the right to fire people for any reason whatsoever. Employment is a relationship resulting from express and/or implied contractual obligations on both parties. Contract employment binds both parties to the terms of a written agreement, while "employment-at-will" creates obligations most often bounded by objective tests - reasonable expectations and rational relationships to the ability to perform one's duties. You may be able to fire a smoker because their habit interferes with their productivity (and this must be documented). You may fire a smoker because their employment contract contains an agreement not to smoke on the job, or to quit after a given period of time (again documentation would be required). You cannot, however, fire a smoker because they will cost you more to insure them (if so, you shouldn't have hired a person you knew was a smoker). You cannot fire a smoker simply because you don't like the way they smell - any more than you can fire an obese person because you don't like the way they look.
The Government has unfortunately complicated contract and labor law through the imposition of all manner of awful non-objective and punitive (to employers) measures (see: OSHA) so that traditional standards of responsibility and liability no longer hold. As with so much else about modern jurisprudence, common sense went out the window a long time ago, and lawyers helped push it off the ledge.