Erratic apply-scale behavior with vert groups and displacement modifier
OK, found your culprit.

I just realized that you typed out the correct step in #7, however, it seems that you have mistaken the icon per your screenshot on your erroneous one (it's easy to do, because it looks very similar). Be sure to set your pivot point to individual origins.





Here's the behavior of doing S Z 0 using the different pivot modes:

Active Element:

When using the active Element, Blender is considering the origin of whatever your last active selected item is (in this case, the last face selected). In other cases/selection modes, it could be the last selected vertex/edge, as well as in Object mode - this would be the last selected Object, and would consider its origin as the pivot center.





Median Point:

In the demonstration below, I used two selections for simplification, however when using this mode, Blender will take whatever is selected and calculate an averaged pivot location, and use that.





Individual Origins:

For this mode, Blender considers the "origin/pivot point" whatever the median pivot would be if you were to use median, and pick only one object. The difference is that it does this on everything selected.





3D Cursor:

For this mode, anything selected will pivot from the Viewport's 3D cursor location.





Bounding Box:

This one acts a lot like Median Point, although instead of thinking about calculating a median like origin between object origins, it calculated the extremity boundaries of the items selected, and then brings you to the mid/center point of that (in this example it is hard to tell the difference between Bounding Box &amp; Median Point Pivot Mode.