Snapping to grid get's messed up after scaling down vertexes
I think the issue comes from a misunderstanding of when increment snapping works.

Grid snapping only works for translation operations, scaling and rotation use value increment snapping not grid snapping, since rotations and scaling can't always be forced to coincide with the grid without some distortion.

The fact that your first scale does alight with the grid is a coincidence because the starting plane edge was exactly 2 units in length, and the end vertex were both grid aligned to start with.

That resulted in increment snapped values randomly being fractions of 2 units, which matching the grid cells by chance. When scaling up again, the edge will have a random different length, and fractions of that value will no longer necessarily align with the grid.

Bottom line, if you want grid aligned vertex use translations, or manually match them after using other transformation tools.