I think one reason is that image resizing algorithms are nontrivial. An image uploader sounds simple enough until you start supporting many different scaling algorithms [1] across a bunch of formats. Browsers are already big and complex enough IMO. This could be easily / best handled by a library instead.
Another point is that holding onto the unmodified images server-side (and merely serving a cached, resized, optimized version on the fly) can be beneficial for future use cases.
Check out, e.g., Thumbor [2] if you're curious to see more of the complexities involved. I have self-hosted it for a company before, and it worked well.
[1]: https://en.wikipedia.org/wiki/Image_scaling
[2]: https://github.com/thumbor/thumbor