No difference either way. The actual parameter and the formal parameter are different variables in different contexts, so it may be claimed they should have different names; but when the function is called they both have the same value (the argument) so it may be claimed that they should have the same name.
Certainly PHP doesn't care if the two variables have the same name or not. Variable names are for the benefit of humans.
But really, the name of the formal parameter as it appears in the function declaration should be suggestive of its purpose in the function (hence the use of "$haystack" and "$needle" in the manual descriptions of strpos() and the like), while the name of the actual parameter as it appears where the function is called should be suggestive of its purpose in that context.
What about
$this_stuffed_thing = foo($this_thing);
$that_stuffed_thing = foo($that_thing);
$another_stuffed_thing = foo($another_thing);
?
Someone else is going to have to come up with advantages in the idea.