if you see the error message in console, error.body.message is having a generic message:- An error occurred while trying to update the record. Please try again as value.
You need to fetch the error message from the below json structure:-
error.body.output.errors.errorCode + error.body.output.errors.message
so the working code would be like:-
It turned out to be a logic issue in the flow, before the assignment, that did not cause an error to be shown but prevented the assignment happening. Once fixed we found that the flow's change to the field was reflected correctly in the formula field used in the validation rule.
Still, not sure why the process builder variant didn't work since this used an &...