i dont know if it always has been like it, but from programming perspective it seams good.
You see all libraries for various sub parts of TCP/IP setup.
As a programmer you can decide if you really want them.
For example if you use a static IP adress you can omit DHCP by put a mark in front of it //
And most services dont rely on udp, as most connections are tcp
udp is for broadcasting and packets can be missed without problems (used in voice over ip youtube etc).
DNS well ... you might try to mark it out and see if your code still works.
Not sure if you need it, its a lookup service to get a remote IP, but your connecting clients allready have an ip adres so as long as your solution doesnt have to resolve
www.somewhere.com/my.data.jpg etc.. it might work without it.
And if your solution only has a server role (providing data on request)..a client might not be needed too.
So despite i dont have a network add on, from a programmers look it makes sense, and its perfect
as now you can mark out the code you dont need, and thereby use less memory on the arduino