Horses for courses
The reason why Perl and Python are used is because if you get a foothold in a system enough to drop a text file off and submit it to any sophisticated interpreted language, Perl and Python (amongst other capable languages) allow more access to network and OS facilities than a normal shell.
It is quite possible (and I have done it) to write things like packet and message forwarders in a language like Perl, opening a port on the outside interface of a system, and shuffling packets to the internal networks. And this is just the tip of the iceberg.
This is not possible using something like ksh88 (although it may be possible in ksh93, with it's dynamic library linking).
The thing about interpreted languages is that you don't need to know the underlying architecture of a system, or rely on a compilation system on your first foothold, in order to perform sophisticated attacks. The high-function interpreted language give you all the facilities you need.
Where hackers use C++ and other compiled languages is for external attack tools like port scanners and brute force tools. But, in order to use such languages to run things once you are in a system, you have to either know in advance the internal architecture of a system so you can compile commands in advance, or use a resident compilation tool on that system, something that should never be allowed on a system on a boundary.
I'm sure there have been multi-layer attacks that have gained a foothold, inserted precompiled tools such as a minimal compiler, then sent programs through to compile in situ, but it's easier just to use something like Perl if it's on a system.
If it were possible, I would completely ban high function interpreted language runtimes on boundary systems in an environment, but nowadays, so many admin tools rely on these runtimes that it's just not possible.