As an ex-heavy smoker married to a heavy smoker I can see both sides of the problem. Smokers don't perform as well when denied their nicotine (patches and gum etc. don't quite do it). Yet there are real dangers in smoking when driving and flying (mainly during certain phases of flight) due to hot ash falling or fags falling onto the lap, onto the floor.... So if you ban smokers you get less than 100% from them after a time which can be dangerous, if you let them smoke then you have other risks or simply 'unacceptable social behaviour' affecting others.
The only real answer is not to employ nicotine addicts at all but that would take a huge number of excellent pilots out of the system; could it cope?