I can imagine one case, in which the input parameter could be NULL so that pass-by-pointer is preferred but not pass-by-reference?
Can anybody add more cases?
A function could, conceivably, be written to do something with the memory, such as reallocating it to make it larger (returning the new pointer).