Out of curiosity I soldered a crystal and end header to my T3.2, hooked up a 3V coin cell and loaded the stripped down and modified version of the TimeTeensy3 sketch shown below. I removed all the time sync stuff (which is not needed to test the RTC and only serves to confuse things). I also set it to set the time back 1 hour 10 seconds after starting up.
With the serial monitor open, after the initial load, the loader set the RTC to the compile time, which was displayed. After 10 seconds, the sketch set the time back an hour, and the changed time was also shown.
Loading the sketch again, the time did
not change back to the current time. It started up an hour back. After 10 seconds, the sketch set it back another hour, making it 2 hours behind.
I removed the USB connection and the 3V coin cell, reattached the coin cell and plugged the USB back in. The sketch started up with the original compile time (now several minutes in the past). After 10 seconds, the sketch put it back another hour.
Loading the sketch again, this time the loader set the RTC to the current time.
Just to summarise what I observed:
Once the loader had set the RTC, and with a 3V cell on Vbat, a subsequent load did not reload the RTC time until both USB power and Vbat were removed and reapplied.
It appears with the T3.2 that if you want the loader to reset the RTC to the current time, you must remove USB power and Vbat, reconnect them, and then reload your sketch. I'd want to double check to be sure but I don't think that's how the T4.x does it; I'm pretty sure that the loader resets the RTC every time you load a sketch there, regardless of whether the RTC was previously set. Interesting!

Code:
#include <TimeLib.h>
unsigned long changeInterval = Teensy3Clock.get() + 10; // 10 seconds
bool changeTime = true;
void setup() {
Serial.begin(115200);
while (!Serial); // Wait for Arduino Serial Monitor to open
delay(100);
}
void loop() {
digitalClockDisplay();
delay(1000);
if( changeTime && Teensy3Clock.get() >= changeInterval ) {
Serial.println("Setting time back 1 hour");
Teensy3Clock.set(changeInterval - 3600); // set back 1 hour
changeTime = false;
}
}
void digitalClockDisplay() {
// digital clock display of the time
time_t now = Teensy3Clock.get(); // get the RTC
Serial.print(hour(now));
printDigits(minute(now));
printDigits(second(now));
Serial.print(" ");
Serial.print(day(now));
Serial.print(" ");
Serial.print(month(now));
Serial.print(" ");
Serial.print(year(now));
Serial.println();
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}