You're making it sound like copying a file is as simple as reading from one place and writing to another. In reality, file operations are an incredibly complex problem.
A few points:
1) The shell doesn't just deal with files. It has a very sophisticated set of abstractions to support all manner of data sources. Whether it's WebDAV, SMB, HTTP, FTP, a portable media device, a third-party namespace extension, or a standard filesystem location - the shell has to support transferring data between each. Each can have its own set of requirements around naming, around alternate streams, around metadata support, conflict resolution, ACL / permissions information, error handling and resume support, and so on.
2) Read the link I gave in my earlier post. Windows XP used buffered I/O and also dismissed the copy dialogs before the operation completed. Vista changed this so that the dialog stayed until the operation completed and also disabled the use of buffered I/O. This offered some advantages, but in SP1 we moved back to buffered I/O because of customer feedback (and a lot of work to optimize its usage).
3) Vista does a much better job handling ACLs and maintaining permissions structures across copies and moves. But there's some small overhead introduced in order to accomplish this.
4) Vista introduced a lot of features around the "discovery" process before a copy or move operation begins. This process adds some additional overhead, but enables a better experience in other ways. For example, beginning in Vista the shell can now ask you upfront about conflicts that will occur. This prevents you from starting a large operation, walking away, and returning to find that as soon as you left the room the system asked you a question about one file at the front of the list, leaving all the other non-conflicting files waiting for your response.
In Vista, the shell will check every file for conflicts before it begins copying. And once it does begin copying, most errors it encounters (like a permissions or file-in-use error) will be deferred until every successful item is copied. Then it will prompt you at the END of the process for those which it was unable to handle without your help.
Now, there were some issues with this logic in Vista which caused it to be run unnecessarily (like on same-drive moves) or take more time than it should. SP1 made significant improvements to this, and as I said Windows 7 makes substantial improvements on top of that.
There are other complications I didn't cover here, like the fact that I/O is scheduled to ensure that media playback isn't interrupted and that the system remains responsive during these operations.
If you haven't built such a system, it's easy to oversimplify the problem and make it sound trivial. But that doesn't paint an accurate picture of what's going on. There are very few "simple" problems when dealing with software as complicated as an operating system, especially one with the scale and broad requirements of Windows.