It should absolutely always show them by default. Being able to hide file extensions is one of the stupidest things ever done in windows, and making it the default een stupider yet.

At the very least, it should be able to handle multi-dotted extensions properly (or have never allowed a file to be named that way in the first place). Since, if I call a file foo.jpg.exe, the user sees foo.jpg even with extensions hidden, which seems safe enough.