I've followed discussions here and on d.o about removing unneeded revisions tables.
How would I completely prevent any data from being written to the node_revision and field_revision_* tables?
Field SQL norevisions actually solves exactly that problem by
Field SQL norevisions provides a field storage backend using SQL that does not create a revision table for each field.
I haven't tried it, but anything written by Alex Pott can probably be expected to work properly.
I assume however that this also goes for all entites as it changes the storage backend.
Without a new storage engine, the below is the original, less useful, answer:
The revision tables must be available, and they must contain data. Unfortunately, you just cannot get rid of them without completely breaking Field API, the reason being that the revision, contrary to their name, is the data storage.
Perhaps it's possible, with more database wizardry than I know, that you can set the regular field_data_* tables to be mirrors of each revision table. That might work.
Other than that, I can't think of any solution that would do this.
Edit: While I don't know if this will have, "interesting", side effects, I asked the wizards if this was at all doable. Can I have one table be an alias or symlink to another?.
Edit 2: Actually, it seems like much wizardry isn't needed at all. One could try replacing the field_data_* tables with a View that replicates the corresponding revision tables. Again, I haven't tried this, and my understanding of the interals of field api are a bit lacking, but it certainly could work.
Edit 3: (Yes, this is getting silly), someone pointed out that the above will cause the same data to be written twice, now to the same table. So it probably wont work anyway.