Hello Jacob,
AsUser Methods were introduced in AOSP when Android started supporting Multiple Users on the Android (extensively used by Enterprises for use cases like implementing BYOD).
"As developer of services which run as system", you would want to know exactly for which user, you are trying to do a particular thing like starting an Activity.
Like if you are starting an Activity for KeyGuard (Lock Screen), you might want to start that activity as a particular user (different users having different lock screens and security settings).
So determining the correct UserHandle depends on the question , is your system service doing things differently for different users.
UserHandle.SYSTEM should not be confused with UserHandle.CURRENT because CURRENT refers to currently active user.
When you setup an Android device for the first time and complete the setup wizard of the phone a USER is created with UserID (different from uid in case of android) 0, which is same as UserHandle.System, but if some other Users were created afterwards on the device, then UserHandle.CURRENT may be different from UserHandle.SYSTEM (FYI UserHandle.SYSTEM replaces UserHandle.OWNER because historically first user created on Android device is owner of the device and the owner could create or delete other users, but as multi-user support on Android is growing with every release, the authority of adding or removing other users now may not always be with the first user created on the device that's why they have changed the name from UserHandle.OWNER to UserHandle.SYSTEM which makes more sense according to growing multi-user capabilities of Android).
Abhishek Subal