What do you mean by "what user runs"? That's completely up to you, what user is used to run certain steps of the workflow. The user that is set using Authentication.setAuthenticatedUserId(), will be used when needed. However, there is no place where activiti "enforces" a certain user to be uses for certain operations.
So to answer your question: the user that was set at the time the API-call is called that causes the service-task to be executed, is the one used in Authentication. In case of an async activity (or timer), there is by default NO user set.
If you're using Alfresco, this model is slightly different, but I presume you're talking about activiti-standalone?