SE-0395 defines a transaction as everything between two suspension points, which is a good first definition. If the Language Workgroup happens to be interested in the transaction observations that I described above, then the definition of a transaction would need to be slightly amended. The reason for this is that a transaction observer may perform further changes in response to initial changes (I called that a "trigger"). Those extra changes are wrapped in second transaction (that may itself trigger other transaction observers):
suspension point suspension point
--*-----------------------------------------*--->
< first transaction >< second transaction >
This means that "transaction" is not an exact synonym for "everything between two suspension points". From this, we may be able to expose transactions to userland, with begin/end pairs, or some kind of withTransaction { ... } api.
Maybe we need to find good reasons for such extra apis in the first place.
As for nested transactions, I don't see yet what purpose they could have.