The purpose of MSMQ is the exchange of messages between multiple machines. Like most protocols, MSMQ has a distributed state and requires all machines to agree on that state. Restoring a snapshot that has been taken in the past means the machine state goes backwards in time. As a consequence, that machine will "forget" all transactions it has committed to. The same holds for sequence numbers of messages.
Example: A snapshot of machine M1 is taken at time T1. Afterwards, machine M1 exchanges messages with another machine M2. Now machine M1 is restored to the snapshot taken at time T1. If machine M1 sends new messages, it will be sending sequence numbers which machine M2 believes are duplicates. As a consequence, machine M2 will discard these messages. If machine M2 sends new messages to machine M1, M1 will see a gap in the sequence numbers and discard those messages until the gap is filled in, which will never happen.
The same arguments apply to unplanned replica failover if the final state of the primary VM cannot be copied to the replica: the state of the machine has gone backwards in time.