Basically it boils down to Calum's explanation, somewhat. Data from that file already in the file cache will mean that data is read in much faster than if it was to hit the disk.
The Write, however, is more deterministic. Windows Vista was well known for it's wildly inaccurate predictions. Those predictions and problems were a result of the copy being changed to use a write cache; meaning that the operation would go really fast until, as Calum noted, it had to actually start performing the write operations and hitting the disk. People got pissed because when the dialog was gone, data was still being copied in the background.
Windows 7 (and presumably
change this, however. Now, the dialog will stay until the copy is completed in it's entirety- thus why the progress bar stops near the end. As far as the User-level software is concerned- the copy has completed. It's done. All the data is transferred. However, in reality, that data is still waiting in The write buffer to actually be written. Win 7 will finish copying everything, But what it does is also acquire a handle to the operation, and then it waits on it. What this means is that it will stick around until the copy is
actually finished, and tries to flush write operations.
For the ProgressBar, this is a bit of a tricky thing to represent- there is no way to really know how much of the data is actually transferred to disk and how much is still waiting to be written. So it just sorta sits there, waiting. For the copy to actually complete.