Simon, Mat's Mug, what's the (rating) difference?
The static chatName() method isn't used at all. Just get rid of it because it is only adding noise.  
Why is the static clearName() method public ? Make it either private and non static or place it in some other class which has the responsibility to do such cleaning to get the clear name.  

Or to ask different, what is wrong with using org.apache.commons.lang.StringEscapeUtils.unescapeHtml like you do in AnswerInvalidationCheck ?  
StringBuilder  


IMO if you "know" or if you can narrow the resulting capacity of the StringBuilder you should use the overloaded constructor which takes the initial capacity as a parameter. 
I like the fluent methods of the StringBuillder. IMO taking advantage of the fluent way makes it easier to read the code.  
doing string concatenation to build a parameter for the append() method is somehow strange. Why don't you just use the append() method ?  

Some vertical spacing would be good for your code. It groups related code and makes it more readable.  

def max = users.stream().max(Comparator.comparingInt({it.reputation})).get();
def min = users.stream().min(Comparator.comparingInt({it.reputation})).get();

StringBuilder str = new StringBuilder();
str.append(clearName(max.display_name) + " vs. " + clearName(min.display_name) + ": ");
str.append((int)max.reputation - (int)min.reputation);
str.append(" diff. ");

diffStr(str, max, min, "Year", {it.reputation_change_year});
diffStr(str, max, min, "Quarter", {it.reputation_change_quarter});
diffStr(str, max, min, "Month", {it.reputation_change_month});