It is a weak, but not incorrect, sentence. As you pointed out, people will interpret it in two opposing ways. Some people, including many native speakers, will read it and think he has been a teacher for the last three years. Other people will think that he stopped being a teacher three years ago. The second interpretation is the correct one but a sentence that 50% of native speakers will misunderstand should not be spoken. It can be cleared up like this:
If he started teaching three years ago, say
"It is (or 'has been') three years NOW since he BECAME a teacher".
If he stopped teaching three years ago, avoid the word "since" and say
"He has not been teaching for three years now."
or
"For three years now he has not been teaching."