Delay() braucht man generell niemals, die sind zu 70% nur Gepfusche.
Grundsätzlich kann man sie _immer_ vermeiden, und gewöhnlich sollte man das auch tun.

Ausserdem: unterschätz die Motorcontroller nicht- viele halten den letzten Wert nämlich, bis sie ein neues Kommando empfangen.
Zudem kann auch ein Arduino unter der Haube so einiges, was man normal gar nicht merkt- beispielsweise können mittels eingebauten Timern durchaus mehrere Prozesse "scheinbar" nebeneinander laufen. Das spielt sich in Mikrosekunden ab, daher merkt man das nicht.
Nur: Schrittmotoren müssen _völlig_ anders angesteuert werden.
Du wirst also nicht drumherum kommen, dir die Dokumentation zu der Bibliothek mal gründlich anzusehen.