Why is avoir used instead of être when expressing/referring to age?
- Il a 16 ans
- J'avais 6 ans
If I'm not mistaken, these literally translate into "He has 16 years" and "I had 6 years".
Why not "Il est 16 ans" and "J'étais 6 ans"?
Just to get a feeling for why such a meaning is possible, you can take it as meaning
I have 16 years (of age under my belt).
or think of it as similar to the past perfect tense in English (have+past participle), which links past and present
I have (aged for) 16 years (and this is me now)
If we take "copula" as the fancy term for "to be", and look around other languages:
So it looks like Latin-influenced language prefer "have" while saxonic languages prefer the copula, but globally the expression can be anything.
Last thing, you can use "to be" in French:
Elle est âgée de 53 ans.
but it sounds journalistic.
(NB: I had to look up some age expressions)