Code is usually consistent. Odd issues that occur inconsistently like this are usually because of something changing by the user and not something changing in the code... code usually doesn't change.
So, the only thing that I can think of is that it has something to do with the images that the user is uploading. Since they are using the same process for each image and the only thing that would change is the image being uploaded.
The key to solving any problem is to reproduce it. I tried my hardest to reproduce the problem with the files you provided. I took the three images you gave and uploaded each one 8 times, so I had a total of 24 files uploaded and didn't see any problems. The 24 images were uploaded (I disabled the database insert since it didn't appear to be part of the problem).
I'm thinking that maybe if I got a zip of all of the images they are trying to upload I could use those to reproduce the problem. What I really need is steps to reproduce the issue. Once I can see a problem, I can almost always fix it. But without seeing it in my trials, I can't really figure out what to change or test if any changes work since I can't see the problem in the first place.