A zero-crossing based circuit is necessary, for sure.
From the time it's triggered, a TRIAC stays on till AC reaches zero.
In a 60Hz system, each alternation is about 8msec.
If you trigger about as soon as you detect zero, then you get the full alternation out.
If you delay trigger from zero-det for 4 msec then you get 1/2 the alternation.
When you simply pop a lamp or something on/off then zero-cross isn't necessary.
But if you're dimming, phase-controlling, then you need zero-crossing.