a decent network stack is hard to do, and requires a fair bit of error handling
handling malformed packets, error correction to reconstruct a packet sequence if one packet happens to have been dropped, etc. etc.

With limited resources on embedded systems, memory and processing power are expensive

You can fudge a TCP/IP stack, and leave out a lot of stuff
meaning less memory and less computing power is required

It's far more fragile, and unexpected circumstances can confuse the system, but it is cheaper