"why doesn't mysql keep it in memory for later use if there is a ton available"
It should. All 'proper' databases do that.
"and updates could be done in memory and queued to write to disk, wouldn't that be a lot better??"
That is usually what happens, but you must synchronise the modified (dirty) pages in memory with the pages on disk 'before the power fails'. A database may not return 'success' for a query untill everything that has been done during the query has been written to disk. Otherwise, some error on the server might cause the data to get lost before it is written to disk.
This is why Informix, and yes, even InnoDB allow you to store the data on raw-devices. That means that the database data is written to disk through unbuffered writes, giving more speed and reliability.
http://www.mysql.com/doc/I/n/InnoDB_Disk_i_o.html