Reading the documentation here, the advice is to run certain DML operations within a System.runAs(user)
block.
I don't really understand why that needs to happen. I know that it works - as my unit test for creating an EmailTemplate is now working. But I don't really know why it has to be within a specified user context.
Can someone provide a clearer insight than the documentation as to why this needs to happen?