default parameter class method
You cannot pass an array of characters as an argument (implicit or not)
to a function. When you write

String rtcTimeString(char ts[] = "MM/DD/YY hh:mm:ss");


The array notation is implicitly converted to a pointer. The line above
is then equivalent to:

String rtcTimeString(char *ts = "MM/DD/YY hh:mm:ss");


And this is incorrect: you are initializing a pointer to modifiable
characters using the address of an array of constant characters. The
compiler should have warned you about this... if you enabled compiler
warnings. The correct prototype should be

string rtcTimeString(const char* ts = "MM/DD/YY hh:mm:ss");


But then you cannot pass this pointer to DateTime::toString(), as this
method expects the template string to live in a buffer it can overwrite:
that's where it will write the formatted string.

I suggest this solution:

string rtcTimeString(const char* ts = "MM/DD/YY hh:mm:ss") {
    DateTime now = rtc.now();
    char buf[strlen(ts)+1];  // allocate a fresh buffer
    strcpy(buf, ts);         // copy the template there
    return now.toString(buf);
}