Harmony Agreements explain the differences quite well.
Essentially, the difference is that with a CLA the contributor retains the copyright; with a CTA the organisation becomes the copyright holder.
A CLA such as this one includes a permanent, irrevocable, free (gratis) license grant to the organisation so that they can always use the code you provide them. CLA's also often include a disclaimer and damage waiver, protecting the contributor from legal recourse if their contribution unintentionally causes problems.
A CTA (also: CAA, copyright assignment agreement) instead takes the copyright (and therefore licensing rights) away from the contributor, and gives them to the organisation. This is a more heavy-handed way of ensuring the organisation always has the rights to use your code. CTA's are also used to ensure that the final product is single-copyright, instead of having multiple copyrights across the codebase.
The other important point to note about CTA's is they often don't include a disclaimer or waiver, which could potentially leave contributors open to legal attacks if their contributions cause problems.
There is no defined way one should be used over the other. It depends on how the organisation wants to maintain their relationship with their community: some people hate CTA's, others say that CLA's result in legally messy products. The organisation also has to acknowledge that if they use a CLA, they likely won't be able to sue if something goes wrong.