To add to your excellent points
- CPAN can only solve dependencies on other CPAN modules. The package manager of your OS can solve other dependencies as well (a C library for instance).
- The package manager or your OS (well, at least most of them) can list which files belong to a certain package, and, given a file, list to which package it belongs. That's much harder with CPAN.
- The package manager of your OS will usually have pre-compiled binaries available (XS modules in case of Perl). Installing from CPAN requires compiling XS modules yourself. Usually not a problem, but it might not work out of the box. Also, you might have servers that don't have developer tools installed (like a C compiler).
- The package manager of your OS may check certain resources first, for instance whether you have enough disk space to install something.
I'm not suggesting one should use CPAN or that one should use the package manager of your OS. I'm not consistent either - on some boxes I use CPAN. On others, I use the package manager of the OS. And on some boxes, I use the package manager of the OS, RPMs (which isn't the native package manager of that OS), and install CPAN modules manually.