reading a txt file from an sd card over the internet

I would personally use a web based server, then have the arduino upload periodically.

But with the arduino as the main interface, you could send out a header then when its time for the data, switch between sd and ethernet in a loop reading and sending a small chunk of data.

As the arduino is the server, there may be ways to increase the maximum server time-out if sd access becomes lengthy.

seems like that defeats the purpose of having external storage

The sd is a completely independent device, as the Ethernet shield is used on micros that have limited resources, the creator has outweighed cost over features. Its pretty much a bonus, as many Ethernet setups will need the additional space.