In real life the do align perfectly, otherwise they will get stuck.
Here there are off a bit because 1. I didn't get the sizes absolutely right as I modeled it in Blender and not in a real CAD (like Gearotic) and 2. The gear simulation is iterative so some floating point error accumulates over time.