As the other comment mentioned, the email body contains the entire quote chain. The way clients accomplish threaded display is a combination of:
- parsing the unstructured email body and looking for quote levels, html formatting and printed email heads
- parsing certain headers like message-id, in-reply-to, dkim sig
- looking for sections of the message body in the inbox
This is done because there is nothing in the protocol to cleanly accomplish what you want. Even if there was, you could not rely on it at all. Doing anything with email is a gigantic PITA, you sometimes get emails where the msg-encoding header doesnt match the body's encoding, html in the plaintext section and other fun things.
Since nobody really cares about the RFC and just does their own thing, there is no chance at improvement.