I doubt this is what is happening. TransactionScopes can be nested as long as the underlying technology supports distributed transactions, if necessary. For instance, if you start a transaction and update some data in database A, and then you call a function, and inside that function, you create a new TransactionScope and insert some data into database B, then the inner transaction uses the "ambient" transaction that was already open. However, for this to work you need the Distributed Transaction Coordinator running (for SQL Servers). Also, SQL Server 2005 and above has the ability to start a transaction as a regular transaction and promote it to a distributed transaction if it needs to, whereas SQL 2000 will start all of them as distributed transactions because it doesn't have the ability to promote them.
When you have nested transactions, the whole transaction doesn't commit until the outer-most transaction is committed.
Here's some more info.
Take a look at TransactionScopeOption; that determines how the nested transaction interacts with outer transactions.