To answer the part of your question that hasn't been addressed ("Why do I even need to do this at all? Why doesn't it just use all available features by default?"): Backwards compatibility.
Imagine, if you will, a Perl programmer working in the Dark Ages of Perl 5.008. Perhaps this programmer was working with, oh, I don't know, speech synthesis, and wrote a sub say which takes a string and sends it to the text-to-speech engine. If we take this perfectly good Perl 5.008 code and run it on 5.24 in the real world, it will probably Just Work™ without modification. In an alternate reality where 5.24 enables all of the 5.10-and-later features by default, however, we run into an immediate conflict between the programmer's sub say and the built-in say keyword, which will almost certainly break something, if it runs at all.