Also note that CoreImage is now available as of iOS 5, but only a few of its features. I believe you can use a CoreImage transition in an animation, but you can't make custom CoreImage filters on iOS (5).
Note that CATransition on Mac OS X will let you specify an arbitrary CoreImage filter to use as a transition, but as it stands now you can't do this on the iPhone, which lacks CoreImage.
Note that this is iOS 2.0-era advice. See Rafael Vega's answer on block-based methods if you're on iOS 4.0 or up.
The CATransition approach gives you more control and therefore more things to set up, eg. the timing function. Being an object, you can store it for later, refactor to point all your animations at it to reduce duplicated code, etc.
The UIView class methods are convenience methods for common animations, but are more limited than CATransition. For example, there are only four possible transition types (flip left, flip right, curl up, curl down). If you wanted to do a fade in, you'd have to either dig down to CATransition's fade transition, or set up an explicit animation of your UIView's alpha.
The difference seems to be the amount of control you need over the animation.