To do this I ended up adding a CASE statement to my script - I could have created a table but this is more portable as I wanted to copy the script to several different servers.
declare @MirrorStateDesc varchar(50)
select @MirrorStateDesc = '$(ESCAPE_NONE(WMI(State)))'
select @MirrorStateDesc = CASE @MirrorStateDesc WHEN '7' THEN 'Manual Failover' WHEN '8' THEN 'Automatic Failover' WHEN '10' THEN 'No Quorum' WHEN '12' THEN 'Principle Running Exposed' ELSE @MirrorStateDesc END
I'm only using this script on states 7, 8, 10 and 12 so they are the only ones I added to my case statement. The other values and descriptions are on the page I linked to in the question, if anybody wants to expand the script for their own uses.
I'm still surprised that there isn't a built in function to do this though!