Resigning all macros seems to have fixed it! Thanks for that tip!
Brenden - I prefer not to install optional components I know I will never use. In my case, they add about 2500 extra files which slows down Visual Studio, compilation, etc. and adds about 25MB more on disk.
Given that the macro resigning was the solution, my previous post suggesting it had something to do with which components were installed was likely inaccurate. I did install several Kentico 8 instances while troubleshooting, and for some of them I ended up sharing the same database, which would result in a conflict with the CMSHashStringSalt value. As this would cause macro failures, and apparently that's why I couldn't save a transformation (even though it had no macros in it), perhaps that is why I was sometimes it worked for me and sometimes it didn't.
The more you know.