Между двумя методами работы с транзакциями есть одно незаметное, очень существенное отличие.

SqlConnection.BeginTransaction создает транзакцию с уровнем изоляции по умолчанию – обычно это READ COMMITTED или READ COMMITTED SNAPSHOT.

Попытка выполнить команду в TransactionScope так же приводит к созданию транзакции SQL, но уже с уровнем изоляции SERIALIZABLE.

Внезапная разница между уровнями изоляции обеспечивает неповторимые ощущения при разрешении дедлоков :) Будьте бдительны!