Short version:
Telnet better supports interactive terminal applications by exchanging info like the TERM environment setting, screen size, translation codes, etc.
Netcat doesn’t do any of that, but is simpler and better suited for sending or receiving binary data. It also has features that telnet doesn’t, like listening for incoming TCP connections and sending and receiving on UDP ports.