Acho que você respondeu sua própria pergunta.
Seu aplicativo da Web está configurado para representar um usuário autenticado.
Quando uma solicitação é aceita, o encadeamento que manipula a solicitação recebe o token do usuário autenticado e, em seguida, essa identidade é usada para todas as operações desse encadeamento até que a solicitação seja encerrada.
O objeto COM precisa ser carregado apenas uma vez, e os administradores podem ler basicamente qualquer arquivo, de modo que o primeiro pedido como Admin é capaz de: a) ler o arquivo eb) carregá-lo no espaço de endereço do processo. Isso geralmente não precisa acontecer repetidamente: quando a DLL está na memória, ela está lá.
Se um usuário comum (ou usuário anônimo) autenticar e for representado, ele não teria permissão para abrir o arquivo, e o ProcMon deveria mostrar a você, junto com a identidade que estava sendo usada. (Por padrão: IUSR para solicitações anônimas).
O bit "conta de serviço" que você descreveu soa como uma identidade de processo de trabalho. Eles são usados apenas para iniciar o pool de aplicativos, ler a configuração e, em seguida, ficar por perto fazendo coisas que não estão diretamente relacionadas a uma solicitação *.
* a menos que você use a conta do Pool de aplicativos como a conta de usuário anônimo e a menos que o segmento representando o usuário não possa sair da caixa (ou seja, precisa delegar), caso em que a conta do Pool de aplicativos será ser usado.