Tables are all objects that do not have nested data inside, just plain column of any scalar datatype. Therefore, a Table operation could always be replaced by a Document operation, only that you have a few more processing options with Tables.
First, while a Document exchanges its payload in XML format with Data Services always, with tables you can either do the same or use a delimited format. If the data is formatted in XML anyway, that decoding has to happen somewhere. But with tables, very likely you will read data from a flat structure, you would have to encode it to XML so Data Services has to decode it back into flat structure. A delimited format used is many times faster.
Second, a Document is always read as a whole. If the Table Source implements the SQLEnable Interfact, it receives a SQL Statement as text including a where clause. This way, reading deltas from a large source table is at least possible, if the delta can be identified somehow, e.g. a "where timestamp > xxx". Depending on the actual source system, decoding the SQL could be tough. You do not get any additional information other than a String with the select statement formatted the same way as it would be if the datastore would be of type ODBC. And there is no way to deal with limited syntax other than raising an exception on execution. So if the source can deal with SQL anyway (why is there no ODBC driver then???) it is straight forward, if the SQL needs to get parsed manually that is quite some work and if the source system does not support all that is possible with SQL, e.g. less-than works but not less-equal comparisons, joins are not supported etc, it gets really messy.
Anyway, Table Source is shown as an example in ReadTable.java and has to implement the Interface TableSource plus optionally Delimited (Payload should get transferred in delimited format) and or SQLEnable. Both optional parameters only change the internal processing thus are not shown at GUI level.
Table Target is demonstrated in the WriteTable.java file of the TestAdapter and implements TableTarget Interface plus optionally the Delimited Interface.
Also, checkout the Interface SQLAdapter to have some control over the Adapter, e.g. if it supports in addition insert also update/delete rowtypes.