With regards to timing: I don't think it's really an issue, if you need accurate timing you should do that through another means anyways (through a 10/100/1000 MHz shared clock, external triggers and gates, etc).
USB is nice if you need something simple and portable. I've used it to just program some powersupply/SMU sweeps when probing a broken IC - the SMU is behind the probestation so hard to get to, and I usually want to save the data anyways. Just plugging the USB cable into the laptop and running a 10-line matlab script is easier there than dicking around with figureing out the IP, opening the firewall, getting a switch, etc. But for larger setups, ethernet is just the better choice. You don't have to deal with USB hubs that never seem to work, it's easier to deal with IPs, and you get the isolation for free. And you get the remote-option for free - need/want to verify that 72 hour sweep is still going? can easily just remote into the system from anywhere in the world with a network connection.
A downside of ethernet (I've been told) is speed when sending lots of commands - I was told much of the standard libraries for Matlab/Python/ETC use one packet per command. So if you need to very quickly sweep over large ranges of settings in eg a multiplexed data-logger (EG, on a multimeter, open previous switch, close next switch, set range, set NPLC, read data, open switch), you get clogged up by the fact that you have a lot of protocol-level overhead and latency. You need to manually fiddle with the packets (in Python, don't know about MATLAB myself) to make this more efficient.