Exactly. That's why private employers and their employees can freely set the conditions of their relationship. One of these conditions can be rules against smoking, even in an employee's private time.
The words "freely set the conditions" doesn't really apply in this instance, though, does it? These workers were employed by the company prior to the new rules going into effect. The terms they "freely" agreed to changed. I think they would be pretty silly to agree to not smoke in their off hours as a condition of employement, and then be surprised that their refusal to honor their agreement results in their termination. However, in this instance, the rules were changed ex post facto. In some states (unlike Illinios, where this same company was forced to retain a smoker they employ despite the new rule, thanks to state laws) this is perfectly legal.
I still think it's unethical, and I would like to see this company get the hammering they deserve for their actions. Loss of customers would be a great way to start. I know I would never go to work for a company that treated their employees so shabbily. All in the name of making a buck? Honestly, I don't think that was their motive, as they had other options for dealing with those workers if all that really concerned them was the bottom line.