First, the full form did not say and he didn't say are completely equivalent in grammaticality and meaning: they differ only in formality. The full form is unusual in speech, unless the word "not" is strongly emphasised. Either can be used in writing, depending on the formality of the text.
As for he didn't say and he hasn't said: like most questions about the use of the perfect, both are fully grammatical, and fully idiomatic, and in many circumstances either can be used. The difference is not in the objective meaning, but in how the speaker is choosing to relate the events to the present time.
If you say he hasn't said, you are choosing to focus on some present relevance of his failure to say. Sometimes there are several possible interpreations of that; but here ts is almost certainly indicating that he still might say - he is still here, or still alive, or still interested in the matter, or still being questioned, or planning to write his memoirs.
He didn't say is choosing to treat the not saying (or the possibility of saying) as complete and finished. The implication is that he has left, or he has died, or he has finished writing his memoirs.
But these are only suggested interpretations, not distinct cases. Suppose he has been telling his story, and has now gone home, but is coming back to tell more of his story next week. In this case, you can equally well say either. He hasn't said focuses on the continuing process of him telling the story; He didn't say focuses on the single segment he has just finished telling.