There is a chance the same path is used, however, not a big chance. The longer the route, the bigger the chance that another route is used.
Different routes are being used for multiple reasons, but most of the time it is either congestion or a financial issue.
A lot of networks peer with each other for free. They exchange traffic, because it helps them both. However for this to work the traffic must be even: The same amounts must come in, as goes out. If that balance is not right, a lot of networks choose to route more/less bandwidth over that one link. Which influences the route that is used
Anyway, a reverste traceroute does not exist. Traceroute works via a set of packets, each with a TTL that is 1 hop higher. So the first will timeout at the first router, the second will timeout at the second router, and so on. These routers send an icmp message back to the sending host: "Your packet has timed out"....and that is how the sending host gets to know which routers are in the path.
For the reverse traceroute to work, the receiving host (The one with the highest TTL), would have to change the destination IP of the packet back to the sender. And pass it though, so that the packet takes the journey back...and still reports TTL events to the original sending host.
However since this simply is not implemented / does not exist...it wont work
Chances are it is going to be the same path. Unless something goes wrong that path is the optimal path.
Not necessarily... for example, a provider might be using Cogent for outbound, then AT&T, MCI, Level3, etc. for inbound.
So they could be vastly different not because something went "wrong", but for intentional reasons.