Varying Parameter Names in Method Overloads
To answer your direct question - always name your parameters to match the intent of the type. If they are passing in an Id, call it an Id. What Microsoft is saying is if you had the following:

    public async Task&lt;Foo&gt; ShowAsync(string name, ...)
    {
        return await DoStuffAsync(foo);
    }
    public Task&lt;Foo&gt; ShowAsync(string resourceName, int id, ...)
    {
        return ShowAsync(resourceName + foo.ToString(), ...);
    }


In that case, name and resourceName represent the exact same concept: they are both the name of the resource. If you are using the same type and concept within overloads, always keep the name the same. For this, you are changing the type and concepts so change the name to match the concept.

With that said...

In this particular instance, I personally probably wouldn't use overloading and would, instead, say ShowBynameAsync and ShowByIdAsync. 

Downside - there's two distinct methods.

A potential upside is that no matter how the developer uses your API, it's always clear (to future readers) what they are passing in. Also, it's extremely clear what's being requested. You could still delegate the "showing" to ShowByNameAsync.

It's not "wrong" to use overloading here and not "right" to use descriptive method names. Just a preference.