We should be able to solve this by decreasing the index size in tables created by WeBWorK. A quick look at the code indicates that it is keying on the first 255 characters of text fields. My recollection is that there isn't a table with more than 3 columns making up an index, meaning that if we reduce the value from 255 to 100, it should work even for utf8 (3 fields * 100 characters * (max) 3 bytes per character = 900 bytes). Of course this means that it would require key fields to be unique within the first 100 characters, which in my experience wouldn't be an issue.
Thoughts?