FreeBSD doesn't support every module ever written, and it certainly wouldn't support modules that the user has authored himself. Plus, if you install from FreeBSD ports, you are limited to using the version of Perl that FreeBSD is presently supporting.
I really enjoy the power and beauty of the FreeBSD ports system, and use it very often. However, when it comes to CPAN.pm, it has its own beauty that often outshines even the ports system.
I understand what you're saying how not every module is available through the ports system. I have found that modules that are available are labeled as p5-MODULE. However, if I install a module through CPAN, using perl -MCPAN -eshell, it still shows up when I run pkg_info, labeled as bsdpan-MODULE. So regardless of whether or not I used the ports, or CPAN, I can still use the power of pkg_info. I don't want to turn this into a flame war though. As the perl slogan goes: there is more than one way to do it.
I allow the ports to install the Perl Ports that they depend on, but I always compile my own version of Perl. I have a Cpan script that install modules that I need and set config for Cpan. This way I don't have to go to each port and install the modules. I have another script that takes the perl tar file and installs it in /usr/local/perl-?.?? dir, links /usr/local/perl to the new perl dir and then runs the Cpan script to set the config and install the modules. The Cpan config is set to "follow" all dependent modules. I find this much more convenient than using all the ports, which use the BSDpan module.