Why sending data from gpu to cpu is slower than cpu to gpu? Why sending data from gpu to cpu is slower than cpu to gpu?

I heard the relation is similar to network situation, in detail, the upload is slower than download. However, I could not understand the meaning.

In my opinion,  the sending operation should be same because the two sending buses (cpu to gpu and gpu to cpu) can be made with the same performance (I mean bendwith).
The actual sending of data is the same. The PCIe bus is the same speed in both directions.

However when programming there is a big difference namely that when you send you can immediately start doing something else (including queuing other operations using that new data) while the actual transfer is going on. But when receiving you need to synchronize on the completion of the transfer before you can use the data that was sent.