mysqldump takes forever to dump tables from a remote server
I ran into the same issue and regarding the "why" this happens, my theory is that it's due to network overhead of opening/closing connections.
My theory is that mysqldump needs to open and closes a lot of connections and that's what's slowing it down.

I ran it on the machine itself and it took 10 seconds.
From another machine, through a VPN, it took like 10 minutes.
From another machine on the same network (connected to the same switch), it took 20 seconds.

It's just a theory but it fits those observations.

Of course to work around that issue, the ssh trick works.