Now this may be due to me running Mojave 10.14.6 on an early 2015 MacBook pro, but for what it's worth, here is what I observed when setting kAudioUnitSubType_MatrixReverb values using AudioUnitSetParameter( _mixerUnit, parameter, kAudioUnitScope_Global, 0, value, 0 ) where 'parameter' is one of:
parameter supposed actual
kReverb2Param_ range of values range
+
DryWetMix 0..100 0..100 works as expected
Gain -20..20 step function: muted if <= 0, otherwise full volume.
MinDelayTime 0..1 0..0.119 crashes if maximum exceeded
MaxDelayTime 0..1 0..0.228 crashes if maximum exceeded
DecayTimeAt0Hz 0..20 0..0.5 no effect if > 0.5
DecayTimeAtNyquist 0..20 no discernible effect
RandomizeReflections 1..1000(int) 0..2(float)
DecayTimeAt0Hz acts as though it was really MinDelayTime. RandomizeReflections acts as though it was really DecayTime, and it accepts floats, not ints. Perhaps the parameter values were changed internally without updating the enum?