If DistancePenalty is changed then all the internal distance volume would need to be recomputed from scratch. However, currently this is not happening. The result is that after an initial Update() call, setting DistancePenalty and calling Update() again has no effect.
See an example here: Slicer/Slicer#6946 (review)