Transactions are not really comparable to batch writes. You should pick the tool that suits the job at hand. The only thing they have in common is that when the operation completes, all the documents will write at the exact same moment (they are atomic). They can also both fail due to violation of a security rule, like any other operation coming from a client app.
Here's how you decide:
Batch writes
- Work offline, will be synchronized later
- Don't pay attention to any current document values, can't safely modify field values
- Doesn't require any document reads to commit
- Doesn't fail due to contention, each write will simply clobber prior writes on the same document
Transactions
- Don't work at all offline
- Pays attention to current document values, can be used to safely modify a document based on existing field values
- Requires a document read in order to write updates
- Can fail due to too much contention on documents in the transaction