Remote button mashing, bruteforce port switching, eventually I found one that worked out and tried to replicate my actions. 🙂
Everytime you wake up ATV, it goes through a series of checklists such as initializing network, display etc. Before it displays anything on the screen, it challenges the HDMI port to give a response. It first asks the TV to spit out EDID data which is a list of compatible resolutions. The ATV had trouble getting that information so it defaulted to 480p along with incorrect clock phase. Hence the wavy lines. I think the firmware just adjusted the clock value but still couldn't detect the TV's EDID. Monoprice's HDMI switcher can detect the EDID of the older generation TVs (maybe it has extra chipsets that ATV does not have) so it can report it properly to ATV.
As for the color problem, the data packets color encoding is shifted because it relies on the proper clock rate. I guess the HDMI switcher only reports it once, (when its turned on) and ATV has a time limit when to receive TV infomation. So turning on both units at the right order and time receives the data packets in time so the ATV can configure itself for display.
You can read it more about it here:
http://en.wikipedia.org/wiki/Extendeddisplay_identificationdata