Hi,
Here's a thread on the subject on the 52221:
http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&message.id=4912&query.id=92463#M...
Since then I have made my boards such that they can have a crystal or not. I've still never had a problem with the relaxation oscillator, but it can clearly be out of spec for USB -- USB demands 2500 ppm accuracy; whereas, the relaxation oscillator gives you more like 20,000 ppm. Once you get into full temperature range operation and production quantities, it seems a gamble to use the relaxation oscillator.
BTW, it is easy to make the sw select either mode on boot, depending on the state of the clkmod0 pin. I do:
// if we don't have a crystal... if (MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_OCOSC) { // we use the 8MHz internal oscillator divided by 1 MCF_CLOCK_CCHR = 0; // and multiply by 6 to get 48MHz MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(1)|MCF_CLOCK_SYNCR_CLKSRC|MCF_CLOCK_SYNCR_PLLMODE|MCF_CLOCK_SYNCR_PLLEN; // USB uses fsys cpu_frequency = 48000000; bus_frequency = cpu_frequency/2; oscillator_frequency = 8000000; } else { // we use the 48MHz crystal divided by 6 MCF_CLOCK_CCHR = 5; // and multiply by 8 to get 64MHz MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(2)|MCF_CLOCK_SYNCR_CLKSRC|MCF_CLOCK_SYNCR_PLLMODE|MCF_CLOCK_SYNCR_PLLEN; // USB uses oscillator cpu_frequency = 64000000; bus_frequency = cpu_frequency/2; oscillator_frequency = 48000000; }
Obviously you can clock the CPU faster than 48MHz if you have a crystal; otherwise, you cannot.
As you find yourself going thru the CMX stack, if you need a "second opinion" on how the USB works, I have a separate host/device mode stack available here: http://www.cpustick.com/downloads/skeleton.zip
(I find it is always helpful to have more source code examples when trying to get something working! 
-- Rich