Get-Service and Get-Counter use a different remoting layer for -ComputerName. Invoke-Command -ComputerName uses the WinRM remoting layer, Get-Service (I believe) is a remote registry call. Get-Counter is a DCOM call, I believe over WMI.
It's a pretty good rule of thumb that if you don't know that a cmdlet with -ComputerName in it is using the PowerShell remoting layer, it's probably not. Many cmdlets had -ComputerName in V1 of PowerShell, and many other remoting layers are more efficient than WinRM, so many -ComputerName parameters use their own layer.