Quick question - using Strings in typedef structures...

That sounds very unlikely

I know. What I find certainly surprises me. Its easy enough to test.

Run this sketch. Then, comment out the EEPROM.put, and run it again. Disconnect the power and reconnect. Reopen the monitor. I keep seeing the saved String. I've tried it with different addresses as well. Perhaps one the the gurus who understands the memory architecture of the Arduino can weigh in.

#include <EEPROM.h>

String stringToStore = "Saved in Arduino EEPROM";
String stringToRetrieve = "";

void setup() {
  Serial.begin(115200);
  EEPROM.put(0, stringToStore);
  Serial.print(EEPROM.get(0, stringToRetrieve));
}

void loop() {}