Function fails with passed in variable, but works if set manually.

Yep, looks like a compiler preprocessor thing.

Works:

Serial.println((__FlashStringHelper*)flashArray[i]);

Does not work:

Serial.println((__FlashStringHelper*)flashArray[i]);
delay(1);

I will have to dig in to the compiler code at some point and see if I can figure out what is going on there.