I don't like the first one either. To me, "Since 2007..." means "From 2007 onwards..." - you are therefore describing a period of time so "He teaches .. " doesn't work
There is a combination of senses possible : Before 2007 he taught every weekday at college; since 2007 he only teaches three days a week.
I don't see how one sentence describes a period of time but the other doesn't.
To me they both describe a period of time: the present period beginning in 2007.
And to me they are both grammatical. The second sounds more natural to me than the first, but I have not worked out why.
I have some issue with "teaches at school" as a predicate. Does the speaker mean "teaches school", "teaches at the school", or something else?
However, if we shorten the original sentence to just "He teaches since 2007", it sounds even stranger. Not ungrammatical, just stranger.
And I can remove a lot of the other sentence and it still sounds fine:
Since 2007 he teaches three days a week.
Somehow "three days a week" does something helpful that "at school" doesn't. I can also replace "three days a week" with "a full schedule", and that sounds fine too.
Now present perfect "has taught" does not tell me anything about teaching or not teaching now. If I hear "He has taught three days a week", I don't think it says he teaches three days a week now, but neither does it say he doesn't teach three days a week now. Without further context, I can guess that he probably does, but that is not stated by the present perfect sentence itself.
As I see it, "Since 2007 he has taught three days a week" is about a period of time ending now, but "Since 2007 he teaches three days a week" is about the present period of time beginning in 2008 (or maybe beginning at the end of something other than a calendar year that we call "2007" for short).