I already explained it. Yes, it is related to 'seeking' but its more related to the fact that the drive still only has one set of controlling hardware and read/write arm.
In a drive to drive file copy, the copy can be done asynchronously, since as I already mentioned, there can be some degree of parallelism.
In a same drive file copy, the copy is basically done synchronously, which is slow as heck. The computer has to sit and wait around for the IO operation to complete before it can do anything else regarding the task.
I don't know where the extra penalty is coming from. You'd have to take a very close look at what is actually going on behind the scenes to know this. My point is simply that reading big blocks to ram would only make the problem worse.
Desktop machine: 2 x Opteron 246, Asus K8N-DL, 2GB PC3200 ECC Reg., XFX GeForce 6600GT, 74gb WD Raptor, 2 x 19\" LCDs, Windows XP x64
Server machine: Intel P4 3.0GHz 2MB EM64T, ECS i865pe, 1GB PC3200, 36gb WD Raptor, Windows Server 2003
Laptop: Dell Inspiron 9100 (Intel P4 3.2GHz 1MB Prescott, i865pe, 512MB PC3200, Mobility Radeon 9700, DVD+R/DL Burner), Windows XP
Linux: P3 450Mhz, 386MB ram, Slackware 10.1 (Running mySQL/Apache)