Why does a MySQL MEMORY-backed table take so much more space than on disk?
VARCHARs are stored with a fixed length in memory, so your max length of 255 will be using a lot of space.  Your InnoDB disk table will be storing the rows with a dynamic length.

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html says...


  
  MEMORY tables use a fixed-length row-storage format. Variable-length
  types such as VARCHAR are stored using a fixed length.