I think you're mistaken, snapcraft badges seem to explicitly send a
Cache-Control: public, max-age=0 header which means "dont cache this please"
Github actually caches images in the readme files, if you look at where the images are loaded from you will see they are coming from a github hosted domain where they proxy the image download. I think it's for privacy reasons and to stop people tracking view counts of repositories.
Anyway, blame github