grow faces over single axis
I would keep the displace modifier but start from a single vertex that way it doesn't deform the meshes.
Start with a single vertex and add 2 Array modifiers

Add a Displace modifier, setup a cloud texture, direction to Z, and set the coordinates to object, and add an Empty in the scene.

Add 2 Screw modifiers along X and Y, set the steps to 1 and the angle to 0°

Add a new vertex group to the object

Add a Solidify modifier. Set the thickness to 0, the rim material to 1 and the output vertex group to the group you just created.

Add a very large plane in your scene, set it to not render and set the viewport display to Bounds

Add a Shrinkwrap modifier, target the large plane, set the wrap method to Project along Negative Z, and limit it only to the vertex group. I also added a Bevel modifier.

Add 2 Materials, one for the Top &amp; Bottom, and one for the Sides.

Move the empty :