Why do we say "he is average height" and not he has average height". don't we use have for a noun and is for an adjective?

No, the adjective has nothing to do with it. He is the subject of this sentence. He is singular, so the verb must be singular. Is or has are both singular, so both are correct. In this instance we don't usually say someone "has" a certain height, we say is "average height" or "five feet nine inches". Has usually means an object, not a state of being, as in "He has five dollars," or "He has a wedding ring." We might say, "He has a wide wedding ring." The adjective has nothing to do with verb tense or case.

Errors will occur if you keep that "is" and continue the description with words that need "has" -- here's an example, straight from some of my students' writing in class:

Error: He is average height, red hair, blue eyes, and black clothes.

Fixed: He is average in height and has red hair, blue eyes, and black clothes.

It's not an easy concept, but ... it's English! And we all know English is not the easiest language to learn!

When describing someone's height, we typically use the verb "is" instead of "has" because height is considered an inherent characteristic or quality of a person. "Is" is commonly used for linking verbs to describe a subject, whereas "have" is generally used for possession or ownership of tangible things. In this case, "average height" is an adjective phrase describing the height of a person, so it makes grammatical sense to say "he is average height."

You're right that "have" is typically used with nouns and "is" is used with adjectives. However, in the specific phrase "he is average height," "average" is actually functioning as an adjective modifying the noun "height."

To understand why we say "he is average height," we need to examine how adjectives can be used to describe a noun. Adjectives can be used in two main ways: attributively and predicatively.

1. Attributive use: In this case, the adjective comes before the noun and directly modifies it. For example, we say "the tall building" or "the red car." In the phrase "average height," "average" is an attributive adjective because it directly describes the noun "height."

2. Predicative use: In this case, the adjective follows a linking verb like "is" and describes the subject of the sentence. For example, we say "she is tall" or "the car is red." In the phrase "he is average height," "average" is a predicative adjective because it follows the linking verb "is" and describes the subject "he."

So, when we say "he is average height," we are using the predicative form of the adjective "average" to describe the subject's height.