Se usi un oggetto String, che viene allocato di continuo e ri-distrutto addirittura ad ogni loop() di certo impiega un pò.
Devi usare le stringhe (vettori di caratteri) con un buffer a dimensione fisso ben calcolato (da te).
Poi per stampare i dati dentro a questo array di caratteri puoi usare la snprintf().
In variabili globali metti (ma devi calcolare tu bene quanto grande, io metto 50):
char buffer[50];
Nella loop tu hai le istruzioni che leggono e sono okay, al posto di quei Buffer+= usi la snprintf
DateTime now = RTC.now(); // leggiamo l'ora
accelerometer.getAcceleration(&ax,&ay,&az); // tue istruzioni di lettura
....
// al posto di Buffer
snprintf(buffer,50,"\t%d g,%d g,%d g\t%02d:%02d:%02d\t",ax,ay,az,now.hour(),now.minute(),now.second());
...
Dati = SD.open("datalog.txt", FILE_WRITE); // apriamo il file in scrittura
...