Is there a standard approach to rolling out database schema changes?
There's no standard process because every system is different.  About the last thing that I would do if just wrap everything in a single transaction.  What happens if I need to move 500 Gigs of data around?  That's one massive transaction.

Recently I've been using database snapshots as my rollback.

Basically take a snapshot, make the changes.  Delete the snapshot after signoff.  If upgrade failed roll back the snapshot and then try again.

It's a lot quicker to roll back a snapshot than to restore the database (assuming that the database is large).