In general both should behave pretty much the same.
Although, by invoking the reset by software allows for the Device OS to issue an event which your application code could subscribe to in order to execute some finishing tasks. This can’t be done when resetting via the RST pin.
Another difference that might contribute to what you are seeing is the difference in timing. Generally you’d hold the µC longer in “reset state” with the pin than the command would.
But none of that would explain the failed registration of
Particle.function() and I personally have never seen that behaviour either.
So what Device OS version are you running?
What SIM are you using?
3G or 2G?
What extra circuitry have you connected?
Could you provide some stripped down code that demonstrates that behaviour?