It IS doing the write to that address, just as it's doing the op to the other address so how can you say it's not doing the write ? Since the value is ALREADY in R24 from previous code line, it just needs to store it. Try it in the simulator.

I think that the culprit is sysclk_init(). I think that Atmel wanted to copy the behaviour of Cortex-M processors: on power-on on Cortex-M processors, all peripherals are OFF, this is hardware. On the XMEGA, this is not the case. So the sysclk_init() function disable all the unused peripherals. And when a peripheral is OFF, you cannot write to its registers. You should look for PR.PRPA or PR.PRPB and enable the ADC there.

Also, since you are debugging, why do you look at the memory view, instead of using the provided processor view (which is much more conveninent btw) ?