The new system expects all avatars to be served from:
The controller itself takes care of sizing down the upload and ensuring it gets cached forever.
In the past our local avatars were always served full size, that is very inefficient and causes unneeded client side work. It would be extra inefficient for animated avatars.
By expecting an Upload per avatar we can ensure the same pipeline is used for sizing down images and the same caching technique is used and same cleanup routines run.
If I were to add any more avatar providers I would start from the base premise that we expect one upload per avatar and then the rest of the pipeline can remain untouched. I do not want to support serving full size unoptimised images to users requesting a 30px avatar. I do not see why you would want to duplicate the sizing / caching and cleanup logic.
If there is a bug in sizing down animated avatars in core we want that fixed. Not workarounds in place.