woher weisst du, dass es am Empfänger / dem Arduino liegt?
Es könnte doch auch an unterschiedlich schnellen Sendern liegen?

Nur ein mögliches Erklärungsmodell, es kann ntl auch andere Ursachen haben:

Sobald nur 1 einziges angekommenes Zeichen das "available" anzeigt, gibt der Arduino bereits aus:

if (Serial2.available()) {
Serial.print("value = ");

da muss der Rest der Zeichen noch gar nicht da sein.
Denn jetzt fängt er erst an, den Rest des Strings einzulesen:

String value = Serial2.readStringUntil('\n');
Serial.println(value);

Wenn die ganzen Zeichen nun lange brauchen, bis sie Sender-seitig hinterhergedackelt kommen, dauert es halt mal mehr, mal weniger lange, bis alle vorhanden sind und vollständig angezeigt werden können. Dabei werden sie nicht byte-weise geschrieben, so wie sie eintrudeln, sondern erst, wenn sie vollständig sind, d.h. wenn der string bis zum '\n' vollständig ist!