It is because in the second example, "I have been waiting" indicates that the person speaking is STILL waiting. It is still happening. "You did not arrive" puts the other person not coming completely in the past, which is untrue because in the present you are still hoping they might appear. "You have not arrived" indicates that the other person hasn't come YET, but allows for the possibility they might still do so. This is why it is more correct.
To summarize:
I waited (happened in the past) but you did not arrive ( happened in the past). This puts all of the events in the past, so this sentence is fine.
I have been waiting (waiting was happening in the immediate past and is still happening in the present as well), but you have not arrived (your arrival is anticipated in the present, and was anticipated in the past, but did not happen. You can mentally add the word "yet" to a sentence that has the words "you have not..." in it). This sentence has both a component of what happened in the past (I waited, you didn't arrive) and what is going on in the present (I am waiting, hoping you will arrive).
I have been waiting (waiting was happening in the immediate past and is still happening in the present as well) but you did not arrive (you didn't arrive at all when you were supposed to, the entire expectation of your arrival is in the past). In this case, the two parts of the sentence do not agree, because if the expectation the other person will arrive is completely past, then why is the person in the present still waiting?
I hope this makes sense to you? I tried to explain it without using all the jargon.