I completely disagree with your main argument that progress bars don't move smoothly because it is a complicated problem to solve. Computer engineers have solved much more difficult and complicated problems before. The real reason that progress bars don't work as well as they should is simply because companies don't see any value in solving the problem. In their mind, the progress bar is just a tool to give the user the assurance that the computer is doing things to process their request.