Q:

How to securely send private keys

What is the recommend way and best-practice to send private keys and SSL private keys? I was thinking of zipping up the files, then using gpg:
gpg -c thefile.zip

The problem then becomes how do you send the passphrase used to encrypt to the other end? Is there a better solution?

A:

TL;DR: private keys are called private for a reason.

You can secure private keys by not transmitting them at all.

If you have shell access to the server they are used at, you simply generate them in situ.
If the target device is too weak/underpowered to generate the keys, it is also too weak to use asymmetric encryption (this includes entropy sources). Of course, there are memory-constrained hardwired devices (smart cards, for instance), but you can use a physically secure link to move the keys into them without being connected to the Internet. A rather obscure corner case is asymmetric encryption used in a remote device (read: a space probe or a satellite) but the conditions are unlikely to be met in practice (one key compromised but another secure link still available). 
If you don't have secure shell access (SSH) to the target device, you generally cannot securely copy (SCP) the files. Using email to move the keys, even in an encrypted form, draws unwarranted attention to the message and leaves the trail in perhaps dozens of places across the Internet.
Sending the keys means the people at the other end of the channel must trust you and you must trust them. It is not always a good proposition in business and other high-stakes environments (either party can forge communications with the private keys in hand).

EDIT: For the stated use case of private keys for a hosting provider, you are still better off generating them in place.

A:

GPG can allow you to send these securely without having to send a passphrase. If the destination has their own GPG key, you can encrypt the file so that only they can open it. For example, gpg -e -r E9053BDA thefile.zip will allow only me to open thefile.zip with my GPG key without either of us ever communicating a passphrase.  Alternatively gpg-zip -e -r E9053BDA *.crt will zip and encrypt all *.crt files in one command.
Documentation Reference:

gpg Manual Page
gpg-zip Manual Page

A:

For transmitting keys privately in any secure manner (or any keys/passphrases you encrypted them with), you have no chance but using a pre-established trusted, secure channel from the start.
Depending on your needs and the possibilities available, this might include

sending encrypted mails to an address you already have trusted public keys for, no matter whether OpenPGP or S/MIME
sending them using (snail) mail, sealed if necessary
traveling in person, if necessary comparing official IDs
secure upload to a trusted machine, for example using SSH
sending an encrypted mail, while transmitting the passphrase through another channel (phone, text messate)

What method to actually use completely depends on your needs, and potential eve-droppers. If governmental institutions and secret agencies are possible attackers, most of those ways will be compromised from the start: neither phone, nor snail mail will be secure any more -- and possibly others.
If you just want to communicate with somebody else, both ends should generate their own key pairs, distribute the public key while keeping the private key private. You still have to exchange information on the public keys, for example the fingerprint, through a pre-established, trusted channel like described above.

