I would say you are absolutely correct. The object of explain should be a thing that requires, or at least allows, an actual explanation. A reason is itself a type of explanation (in a way), and thus explaining a reason does not really make much sense in most contexts.
Normally, you give a reason, just like you give an explanation. Unless a reason given is unclear and actually requires a subsequent explanation1, giving a reason for something is often practically tantamount to explaining it.
Substituting a few other verbs, this becomes quite clear:
He gave her the reason why he didn’t show up.
He told her the reason why he didn’t show up.
He laid out the reason why he didn’t show up.
?He detailed the reason why he didn’t show up.
?He explained the reason why he didn’t show up.
*He reasoned the reason why he didn’t show up.
The last one is quite obviously ungrammatical—not only because the verb and the object are both entirely identical here, but also (and more importantly) because the verb reason in this sense requires a noun clause (a that-clause, more specifically) as its object.
The preceding two are awkward, because both explaining and detailing are quite similar to giving a reason (in this context, at least), and unless the context makes it clear that it is actually the reason itself that is being expounded upon and given in more pedagogical detail, you end up with a kind of redundancy that sounds clumsy.
Note also that all these verbs (except gave, which is too generic, and reasoned, as mentioned above) can be used without the noun reason, with a simple adverbial subordinate clause:
He told her why he didn’t show up.
He laid out why he didn’t show up.
He detailed why he didn’t show up.
He explained why he didn’t show up.
This gets rid of any awkwardness or clumsiness, since there is no longer an object that is too semantically close to the verb itself. The role of the noun reason is still there, though, since why as a relative adverb is only used anaphorically with a reason as its (im- or explicit) semantic antecedent.
1 Let’s say for example that he was having lunch at 12 o’clock. He spilled soup on his shirt and went home to change into a clean shirt, where he discovered that his wallet with his keys had been stolen on the bus on the way home. That meant he had to wait for a locksmith to come and get the door open for him, call the police and file a report, and call his bank to freeze his credit cards. All this meant that he was late for his meeting at 1 o’clock. If he then simply said, “Sorry I’m late—it was the soup that did it!”, there’s a good chance he would then have to explain the reason why he was late, despite having already given the reason why he was late.