For one they never (intentionally) show the end user that Flash has crashed, no visible stacktraces, no error messages, just silent failure. Thus avoiding attention being drawn towards it as a technology that is unstable which something Java has picked up with all its history of locking up systems and crashing browsers.
Second they have a really smooth, consistent and painless (almost one click) update mechanism, unlike java for example where you must run a full heavyweight installer, run the risk of installing bundled adware, see ads for other Oracle products, have it take over 5 minutes to complete, etc.
Flash also just works and doesn’t spend time alerting end-users that its a plugin. Java on the other hand has a massive Java logo when starting any applet (hey end-user look Java is starting, if anything goes wrong you’ll know where to vent your frustration), multiple system tray icons appearing (why are they needed anyway?), etc (They even did the same thing for Java Apps running on mobiles). Why is so much advertising needed for Java to people already using it? they don’t need to know or care what their content is using.