How come Datagram Packets between same source-destination pair may take different routes?
Packets are routed individually: each time a router receives a packet, it decides what to do with that packet. It doesn't necessarily make the same decision each time it receives packets for a particular destination. To give a trivial example, somebody might have changed the router's configuration in the time between two packets arriving; a more common example would be a router trying to avoid congested links by sending some packets down a quieter link.