I've encountered this bug in 3.5.3 as well. As far as I can tell, the reason for it is that when the button's GameObject is disabled, the value of its TweenColor is set back to its default color (UIButtonColor.cs:161); this is then applied to the inactive widget (TweenColor.cs:54). Because the Tween is skipped if there is no state change, the button therefore retains its default color despite being in a disabled state.
I haven't found a workaround that doesn't involve reapplying the Tween on every state change as Clicker has.