The root cause is you are not using cron correctly
If you choose to bootstrap local::lib (the default), the module will be installed inside ~/perl5. You may also be prompted something like:
Would you like me to append that to /home/foo/.bashrc now? [yes]
If you choose yes (the default), some variables will be added to your .bashrc (or the equivalent for your shell) so that when you run CPAN in the future, modules will continue to be installed in your home directory:
so you have PERL5LIB updates stored in .bashrc (or the equivalent for your shell), but cron BY DESIGN does not run anything in that file. it is up to you to include anything from that file that you need in your cron request. Again see The Cron Environment and Cron Job Failures
It was not "designed to fail by default", cpan did what it was designed to do, and cron did what it was designed to do, but instead you failed to use cron correctly.