I’ve found this problem on a transactional replication under SQL Server 2000 (yes! a lot are still running on production systems !!!)
After investigating for logins, rights and so on…I figured out it was an impersonation problem, like when you go through DCOM with a wrong impersonation (dcomcnfg)
Looking at the subscripton properties if found out a parameter was activated (offload agent processing). This parameter indicates whether you use the remote agent with DCOM, by assigning the name of the remote server (pull subscriptions)
By disabling this parameter (setting it to false) the replication immediatly ran perfectly.