Now I want the "valley" parts to get more cubes, and "hill" parts to get less. An RBD sim could do that, but I feel there must be a much cheaper way. The terrain is generated by a simple simplex noise. But how to control the Scatter SOP's density by the said noise?
It's relatively straight forward. You generate your terrain, make a density attribute (in this case: using a measure sop to get the curvature), remap that a bit so it covers the valley floors, scatter by density attribute, done.
Another side note: if you didn't want to post-analyze the terrain and instead use the actual noise.. the mountain sop these days is using the same noise as everybody else. That means getting that same noise can be achieved by simply using an attribute adjust sop set/referenced to the same values as the mountain.