I think the algorithm should cover for that case, even if we didn't plan for it.
In steps 1 - 4 only message parameters are resolved (against the resource bundles and then in step 4 against constraint attributes). Only in step 5 the EL evaluation is performed. There is no loop back to parameter resolution after EL interpolation.
So considering the following example:
@ThresholdMax(value=10, messageThreshold=50, message="${validatedValue > {messageThreshold} ? '{muchTooLarge.message}' : '{aBitTooLarge.message}'}")
int myInt = ...;
Then I'd say algorithm should transform the message like this:
After step 3 (resource bundle replacements): "${validatedValue > {messageThreshold} ? 'Viel zu groß' : 'Zu groß'}"
After step 4 (resolution of constraint attributes): "${validatedValue > 50 ? 'Viel zu groß' : 'Zu groß'}"
After step 5 (EL evaluation): "Viel zu groß" or "Zu groß", depending on the threshold value
--Gunnar