I've seen the question in ng's before and have long since pondered why it happens.
No, as far as I know, there's no fix.
It gets down to the measly resources (don't trick yourself here, not RAM but resources) for Win98.
My own SWAG is that doing it completely snatches all the resources and has to keep doing it (choking) until it finally coughs up the right things to do to get thru it and finally breathes again. (probably oversimplified explanation)
So it has to fill the buffer, flush the buffer, fill the buffer and so on.
It also happens on large transfers...and looks like the same problem to me.
The only workaround I've seen suggested that might work (that I can remember now) is adding the vcache settings to system.ini under vcache (where you find it and IF it's empty, usually it is) This is a must-do for Win95...and most are quick to suggest that you don't need it for 98...but I must say it doesn't seem to hurt. But I can't say that it helps, either.
I also read that setting it higher than 32000 is useless...anyway here are the settings:
[vcache]
MinFileCache=32000
MaxFileCache=32000