It makes excellent sense. If the World had been brought to its knees by a self-replicating program and the replacement system was re-designed from first principles then it's one of the first things you'd consider.
In fact a while ago, I wrote a full background fluff piece on it
here. The gist was that the protocols that systems use to talk to each other are designed to inherently forbid replication. Certainly a node could refuse to operate in this secure manner, but then it wouldn't be part of the same protocol that is called the "Matrix."
I'm not saying that it is unassailable and uncrackable as a theory, but I reckon I can do a pretty good job with it and it's a very useful tool for preventing endlessly spawning agents. When a program crosses from node to node, the running process is "handed off" in a manner that prevents replication. I think we have to conclude from the RAW material (sorry) that the Matrix has a very high degree of interaction between the nodes existing on it. So I can allow that this functionality is implemented in it.
Note, we might be talking at slight cross-purposes as I'm purely focused on replicating running processes. If to take a specific example of your principle, perhaps a word processor program used my many employees in an office, I don't think it would be separate instances running for each worker. I think it would be an evolution of the thin client model we see today with lots of employees logging into the "Word Processor Program."
I may go back and extend the Matrix document I wrote at some point, but I don't have time at present.