Well (atypically for me) I'm a little sympathetic to the municipalities on this one. I wouldn't want to get hit with a lawsuit for a hazardous work environment when the culprit may have been the guy's own cigarettes. Maybe the answer would be to do an epidemiological study of smoking vs. non-smoking firefighters. Then when a smoking firefighter gets lung cancer, reduce his award by the increased risk percentage found in the study. This might not be fair for any given individual, but it would be for the group of smokers as a whole. That way the city doesn't have to feel like they're paying for the guy's smoking as if it were a workplace hazard.
That's an idea - but who would do the study? The municipality that would benefit from proving a higher risk? A group of smokers who want to be firefighters who would benefit from proving a lower risk?
I have an even fairer way.....government entities that will not hire smokers should forfeit tax proceeds from the purchase of tobacco products in the form of a rebate of taxes on those products.