What I usually do is try to check the following before deciding what to do:
Will there be complicated joins between tables?
Is the data for one entity spread across different tables?
Are there more than 30 entities expected?
Do I have places where more than 30 entries have to be shown in a single page?
Is the data in the tables changing very often and cannot be cached?
If most of the answers are “yes” then I will go for TableGateways. But it quite often depends on the purpose of the web application. So it will be interesting if other ZF2 developers share also their thoughts on this.