With savepoints, a savepoint will be created for the inner transaction, and rollback will only rollback to the savepoint. Since Sequel::Rollback exceptions are not reraised by the transaction code, the outer transaction will be committed.
Other ruby database libraries handle savepoints in a similar manner.