Well I would say that it’s for convenience.
Preprocessing is necessary for models to work. That’s a fact. Wrong preprocessing–> wrong output.
From a api perspective it makes more sense. If you wanna process images, you just need to pass a natural image between 0 and 255, not a normalized image with strange mean and std. So this ease task for begginers and non CS ppl.
This way also ensures you can grab just the model out of a framework and it will work as designers expect.
I guess preprocessing outside the model was used for computational efficiency. With new gpu gens it’s faster to process many things in GPU than in CPU.