(In fairness, there's probably a few legitmate and possibly even reliable uses, but if you've never had a need to seek out such solutions, count your blessings.)
Ansury has a fair point. For a slightly less jaded reply:
I've been using ExternalInterface on daily basis. Not because of reasons you are describing, but because of kind of tasks you are working on. Let me specify just two in order of commonality:
1. Local Printing.
A user needs to have printing services provided by applications he is running. And it happens that he is running Web Flex applications. Have you tried any serious printing from Flex? Reports, and I mean REPORTS? Silent printing? Barcoded Labels?
2. Applications that involve scanners. Not these keyboard ones, but serial scanners, and other serial devices such scales.
Just my 2 cents.
1- Printing in Flex is terrible (although for simpler requirements it can do fine), true, but it's not incredibly better elsewhere in the browser unless I'm missing the point. This can be gotten around for many by streaming PDFs or Excel spreadsheets from a server, though.
2- If it has to be web, I guess you're stuck. If it can be an installed app (AIR) I'd prefer to hook into Java. Like I said, there may be some limited specific uses, but good reasons to base the majority of your app on JS hacks are hard to come by.