OP you should check the card contents to make sure it is not making false promises or telling lies. You should then tell your son there is a card if he wants it. If he doesn't, keep it for later.
To kids who have neglectful/ absent parents even a little is a comfort. They can tell themselves 'well dad is maybe screwed up or crappy in some ways, but at least he was thinking of me sometimes'. That's way better than 'I was totally irrelevant to him, like I didn't exist'. On top of that, if you DO block contact with him you are making yourself much more vulnerable to your nightmare scenario of dad turning up some time and saying he tried but you stopped him.
You talk about your DS being old enough to have decided he doesn't like his dad on his own. Then he is definitely old enough to decide to read or not read a card.
As I say, even if he decides not to you should keep the card. Very often kids decide later they want to know about the absent parent and they have questions...... you have no right to destroy the answers for him.
And yes telling kids age appropriate truths is fine, but there are many forms of truth. "He doesn't want to be a father" is extremely close in a kids mind to "he doesn't want YOU". You are situating the problem in the relationship rather than in the man, which makes it very easy for the child to blame themselves.
Also, you are willing to cover up the truth by not giving him the card! So seems like you are selective about this truth principle?
If you were consistently concerned with what's best for the child, seems like you would either advocate for truth (even if it hurts) or lying (to save his feelings) both times.... but seems like you are more motivated by not wanting to allow something that makes his dad look a bit better with the card, while insisting on honesty for things that reveal his dad as bad.