Well I actually do think this can be fixed at the client side by re-checking the names on a channel at the moment a user loses a mode.
So if an operator sets -<status> on someone the client *could* re-check the status of the targetted user. (Correct me if I'm wrong)
In theory yes, but it's not a very good idea to do so. The IRC protocol does not allow you to query for the status of an individual on a channel, you'd have to for example do a /names for the whole channel again. On a large channel, and with a lot of deops, this would make you receive lots of information and possibly have the server disconnect you.
If you really want this feature, you can always script it. But in general the problem is not considered to be important enough to warrant a workaround like you suggest.
Weird thing is that the prefix will appear only when checking the channel-modes with a NAMES command and does not re-appear when checking the targetted nick with a WHOIS command.
mIRC doesn't interpret the channels list in WHOIS replies. It would be messy to do so, as some IRC servers use that reply to indicate other things as well (such as the user having set a certain usermode, ircu does this with +d), making it very hard to parse it properly.