Yes grasshopper, hashtables are great. You can control when/if they're written to disk, so can avoid the need to clear the /set -e %variable from vars.ini should windows crash without getting a chance for ON EXIT to sanitize it. Plus the the /hadd -u999999999 item equivalent to /set -e %variable won't be written to disk unless you specifically use /hsave -u
I've seen cases where it can benchmark faster to use a hashtable instead of a local /var because you don't need to use the [ square braces ] to create compound itemnames in a hashtable that are built from combining $network,$chan,$nick etc
You can't quickly hunt down global variables based on their contents, but is easy to do with hashtables.
The big case where you can't use hashtables is when there is so much data that it can't fit in memory, such as in a !seen database that's been built up over years or is in busy channels