Why does drupal create revision table?
The revision table has been set up to track the revisions of a node.  Like Triskelion noted, there already is a thread up on D.O. Furthermore the reason the table is populated is for denormalization purposes, per The aforementioned issue.  Inevitably. this has some drawbacks.  The first of which is bloat.  Write speed is also affected, especially under a load.  The community has seemed to coalesce around using contrib to deal with this issue e.g. Field SQL norevisions.  At some point it would be nice to have this in core, but a rock solid contrib module is the next best thing.