I would venture a guess, that the reason behind that is that contaminated runways are less predictable than dry/wet runways.
They can have non-uniform contaminant depth and/or friction coefficient.
Therefore on a contaminated runway you want to accelerate/decelerate ASAP and have an extra margin, rather than use the entire available runway, which would be the case using FLEX method...
P.S. As for why derated thrust is allowed. I think de-rated thrust is pretty much like putting a smaller engine on the airplane, so it’s like you are using TOGA with a smaller engine - kind of a rule twisting, but still...
Also, a fixed de-rate in most cases will not result in using entire runway, whereas using FLEX/ATM you decrease thrust till you hit ASDA