I think generally the device generating/hosting the data should be the server but that may require more complicated code to handle simultaneous connections. That being said, while my bin temp reading system has the Arduinos setup as the servers, there are times when it would be better if my readers would be the client and my server computer would actually run as a server. For example, now I have to setup my server computer to connect to each temp reader individually (and setup port forwarding for off site readers), instead of just sitting and waiting for the readers to initiate the connection. On the other hand, the network/wifi to serial adapters I use are easier to use in server mode than in client mode. In client mode they would try to maintain a constant connection instead of periodic, short connections.Good question. If you run as a server, then the same code could service connections from a couple of different devices (NMEA GPS as well as Arduino).
Thinking about an IP-based farm data bus, however, it might make the most sense for each data source to be a server and the consumer would be a client. That way multiple clients could interface with the same device, such as a GPS source.