The difference is between an abstract entity and a concrete entity.
An easy way to tell the difference (at least in English) is to think about whether there can be more than one of the object. If it could be either singular or plural, it's probably not abstract.
For example, 'your memory' (here meaning your recollection of a past event) is a concrete entity, as evidenced by the fact that you can possess many such memories. (Not to be confused with "concrete noun" in the sense of a physical object!)
But 'your memory' (here meaning your general capacity for remembering things) is an abstract entity, because you only have one such capacity at a given time -- just like you can't have two intelligences, or two ages, or two heights.
'Why not "tienes una buena memoria"?' Answer: because that would mean having a single, specific memory of something whereas we are trying to express a good ability to memorize things, and that we express as "a good memory" in English but we have to drop the "a" in Spanish (not use una) to avoid changing the meaning from having the ability to memorize to just having one memory.
The firm rule is, the indefinite article can be dropped only if the noun is unmodified. And last I checked, buena is a modifier.
So what's at work here? The difference between memory as a skill, and a single memory/recollection.
In English, having "a good memory" means both. But not in Spanish. Tienes buena memoria refers only to the skill.
Samples I found show úna is used as commonly as without so either is right -
Tiene una buena amiga en ti. She's got a good friend in you.
Esta docilidad tiene una buena razón. There is a good reason for this docility.
Parece que tiene una buena coartada. It seems he has a good alibi.
Cada ventana tiene una buena vista. A good view from every window.
Mi piel tiene una buena pigmentación. I have a good pigmentation of the skin.