Some use cases:
1. Banners - to achieve certain animations, embedded fonts etc via browser, you'd need custom CSS and js, along with a bunch of html markup. Then you'd have to calculate the minified size to ensure it was permissible. Much easier to just be given a single file. Flash compresses vectors like nothing else, and does font subsetting natively.
2. Things like 3d work well in legacy flash versions, but not in css2 and non-canvas browsers.
3. If you're developing a browser game, or browser app, it's much easier to hide your source by compiling it to swf.
4. Flash plays well with media, and networks, allowing you to use sockets, av streaming and get webcam & mic input in all browsers.
5. Some IT policies don't allow modern browsers but do allow flash.
6. Flash source can be compiled for cross platform desktop use really easily.
7. Some animation effects are supported out the box in flash, eg grayscaling images, raster overlay effects etc. Flash vector animation masking has no canvas peer afaik.
I'm sure there are ways to now achieve much of what flash does via Ajax, js and css3 in modern browsers. But it's not necessarily preferable in all applications, or achievable in all environments.