The solution I'm trying to use for this problem is to put the behaviour under stimulus control: adding a cue and training the dog to do the behaviour only when cued to do so.
Unsolicited jumping can be quite annoying or even "unsafe" for you and others (kids, etc.). So the best thing would be to never encourage the dog to jump unless you specifically ask him.
Then you could train the dog to jump, using positive reinforcement. You set up training sessions and you make him jump and reward. Quickly you can add your cue "jump" for example. You reward when he jumps after you said the cue.
It is an easy behaviour to train, quickly he'll be doing it almost every time. Then you stop rewarding when he jump without being asked. You can progressively make it more difficult: you practice in a situation where the dog is likely to jump. If he jumps you ignore him (really ignore him, "no touch no talk no eye contact" as our friend would say) for 15-30 seconds. You can reward when he goes back on the floor and "wait" for your attention. If he doesn't jump you can also reward him for staying on the floor. Then you ask him to jump and you reward him.
So staying on the floor will be reinforced by your "jump" cue, which in turn is reinforced with an real ("primary") reward (playing, social interaction or food).
In the book "Don't shoot the dog", Karen Pryor explains in detail how having a behaviour under stimulus control can prevent that unsolicited behaviour. You could apply the same reasoning to barking, sniffing while on leash, etc.
To answer your first question: yes it is problematic. The dog needs consistency. Even if you say "he can jump on me", it is unlikely that you will want him to jump in every situations.