Im Datenblatt des MOC 3021 sind mehrere Anschaltungen für den Triac drin.
Unter anderem eine Beschaltung für induktive Lasten - die würde ich verwenden.

Eine Nulldurchganserkennung hinter einem Trafo kann üble Phasenverschiebungen verursachen, die dann auch noch verwendeten Trafo abhängig ist.
Wenn man immer den selben Trafotyp verwendet und diesen nicht für andere Zwecke verwendet ( diesen Trafo also nicht für Stromversorgungszwecke benutzt) wird man das wohl kompensieren können.

Bei der Optokopplermethode hat man auf der Primärseite mit hohen Spannungen zu kämpfen und will dann aber sehr schmale Impule bei der Nulldurchgangserkennung haben.
Wir haben das Problem mal so gelöst, das wir hinter dem Optokoppler einen Schmitt Trigger angebaut haben, der ein leicht phasenverschobenes Signal von der Primärseite des Optokopplers geliefert bekam (RC Glied auf der Sekundärseite des Optokopplers).
Die steigende Flanke des Nulldurchganssignals kam somit wirklich sehr kurz vor dem eigentlichen Nulldurchgang.
Die fallende Flanke des Signals kommt dadurch natürlich verspätet, wird aber vom Microcontroller nicht ausgewertet.