I'm missing something here: the article on implicit transactions explicitly says (emphasis mine):
I strongly suggest that you use code similar to that shown above (or use another approach to transactions, *such as TransactionScope*, or Castle's Automatic Transaction Management) in order to handle transactions correctly. So why is it necessary to use an NH transaction when there's already an ambient TransactionScope available? With NHibernate 3.0, the only problem I've seen with this approach is that Auto Flushing doesn't respsect the ambient transaction (which *may* be a bug: SessionImpl.TransactionInProgress does not consider ambient transactions, but its close relative ConnectionManager.IsInActiveTransaction does).
