Because "hambre" does not mean hungry and "sed" does not mean thirsty. (They actually mean "hunger" and "thirst", respectively.) They are nouns, not adjectives. Therefore, when you say, "Tengo hambre," you are literally saying, "I have hunger."
"Soy hambre" is like saying "I am hunger" as if that is your essence. "Estoy hambre" is like saying "I am hunger" as if hunger is an adjective, which it isn't. It is as weird as saying, "I am computer." Computer is a noun, and so is hunger. In Spanish, "sed" and "hambre" are nouns.