I think the problem here is that while the expected bounds are documented and it's known roughly what range to expect, the actual generated noise may be biased one way or another. That is, as I understand it, what's needed here is to remap the range of actually generated values not the expected range.
You can try an altogether different approach.
See the attached example, here the noise values are first scaled and filtered with
Logistic function [
en.wikipedia.org], that brings them roughly to range, then snapped to grid with 0.001 resolution to fill the range exactly (min at 0, max at 1). The snapping step can be skipped if you don't need the exact min/max values.
The setup in this scene is best suitable for “Original Perlin Noise” (onoise expected range -1 to 1), it will work for “Sparse Convolution Noise” as well but more values will tend to 0 or 1 (snoise expected range -1.7 to 1.7). For other noise types an additional remapping is needed before the sigmoid transformation.
Still, the two VOP approach is probably better and more general.