Output contrast is a ‘scarce resource’. The job of the tone mappers is to map a large input dynamic range to a much more limited output range. That means an overall reduction in contrast.
However, usually we don’t want the same contrast (or the same reduction of contrast) everywhere: our main subject should probably retain more contrast than the background etc.
Do not think of moving the pivot as manipulating mid-grey. You move the point around which contrast is highest (well, see * below). This is what Boris demonstrated in these posts:
Blender AgX in darktable (proof of concept) - #669 by s7habo and Blender AgX in darktable (proof of concept) - #674 by s7habo
If you use the picker, the tool will try to make sure the average brightness of the selected region remains the same as it was with the pivot in its original, mid-grey-to-mid-grey position, by adjusting both pivot x shift (input selection) and pivot y (what output to map to).
We could start with this (mid-grey is indicated by the arrow):
If I pick another pivot, the brightness of the selected patch remains unchanged. Picking from the darker patch of the left with L = 32.34 gives this result (top: with new pivot; bottom: original):
All the brighter patches (including mid-grey) have been brightened further (they are now all above the pivot). The brightness of the dark patch remained the same: 32.34
The opposite happens if I use a brighter patch (L = 61.41):
I’m not a purist. I think if you already have module settings (whether it’s tone equalizer or color balance rgb, or parametric masks) that would be all broken by moving exposure, then moving pivot y (changing the brightness of some midtone – normally, the pivot would not be in the deep shadows or in the highlights) is fine. Think of the tone mapper not as an editing tool, but something that prepares your image for display. That is what you are tuning here.
Moving pivot x (without changing the y) does alter the brightness of the image, but it’s kind of a side effect: you move which input (x) gets mapped to the given output (y). You are essentially changing the ‘y’ for the selected ‘x’ (and also move the point of of highest(*) contrast).
When you move ‘y’, you actually, directly adjust brightness.
(*) It may not actually be the point of highest contrast if you create an inverse S curve, which is not what we usually do: