When rereading the post I thought of another reason, apart from disabled startup code, to get the dropped initialization data.
The linker supports different segment types, only READ_WRITE segments get initialized by the copy down. If any variable gets allocated into another type (NO_INIT or PAGED) segment, that variables initialization data is dropped.
So into what kind of segment is the variable you experienced the issue placed?
Not sure out of memory, but it is possible that static locals and globals are placed by default into different ELF sections and therefore can be placed into different segments in the prm.
Daniel
BTW: To make the list of segment types complete, if a variable gets allocated in a READ_ONLY segment, then the variable is initialized during download, not during startup. This is typically used placing constants into flash or EEPROM.