1) you need to -at least- check the disk for updates. On linux, you need to update access time. This will take time. In memory has no such obligations.
2) you still need to compress the file in memory. You can cache the result of the compression, but that won't buy you much. Specifically it'll be too large to ... see point 3.
3) Because in practice pages are generated from very little data (the template is -way- shorter than the filled in sent out text), the ability to work with the data in little pieces without allocating large buffers in memory will avoid trampling the cache, which is going to get you an insurmountable advantage.
And this is ignoring the elephants in the room:
1) Because it's a static file, you'll have to send more data to the client side in total to achieve the same result (e.g. look at how GWT does it, and even there).
2) Because you still want to show customers "their" page, you'll need several more roundtrips to achieve the same with javascript that you wouldn't need with server pages (Note how one of the GWT pagespeed optimizations is to dynamically generate the page initialization data using the webserver to avoid an initial roundtrip).
3) Pure static files lose you a lot of features. Comments, scores, ... none of that. That may or may not be acceptable.