if "RethinkDB is built to store JSON documents", why then there are tables?
JSON docs are stored in tables -- a table is just a collection of JSON documents. We of course also support arrays, but the reason why we start with tables as a primitive is that it allows doing significant optimizations that otherwise would be very hard/impossible. If the entire DB was one huge JSON document, optimizations would be much more difficult to do. Grouping docs into tables essentially gives the system a hint as to the usage intent.
is it transactional?
Only for changes on a single document. There are no transactional guarantees on queries that touch more than one document.