"key_buffer = 384M"
You are missing my point. With only 1GB total, 348MB is starving other uses of RAM. You should lower it. Hmmmm... I see only 4.2MB of indexes in the tables, so probably the key buffer never grew to 384MB.
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
discusses the limitations of MEMORY tables. Somewhere else it discusses how tmp tables won't use MEMORY if any of the restrictions are violated. This led to some of the speedup in the new formulation. VARCHAR (any size) is ok for MEMORY; TEXT (any size) is not.
"reducing result's record count" -- that would be application-dependent.
I'm glad you got the speedup. Sorry I could not make it even faster, but I think that is the best you are going to get with 7K rows.