Many ways that this can happen.
Scenario #1:
Project A is in PLC in RUN mode. It has Edge Bit 5 and Instruction ID 4.
Project B on Disk is opened. It is different than what is in the PLC. It has different instructions, but they happen to use Edge ID 5 and Instruction ID 4. You write this to the PLC in RUN mode. Because those Edge/IIDs were ACTIVE in RUN mode in Program A, we must CLEAR those in the specific instructions that have the same (but not identical) instructions in Program B. So at download time, Program B's program changes those and downloads B with NEW Edge ID and IID for those 2 instructions.
Output Window notifies you of this fact (that Edge IDs and IIDs have been changed). This means that what is on DISK is DIFFERENT (that STILL has the "old" Edge/IID). When nagged at closing about the fact that the disk project is different (but I did not change anything, but you actually did - see output window reference), you do NOT save it to disk.
Scenario #2 (probably more common)
Project A is in the PLC. You make a change to the program, adding a new instruction that has an edge bit or IID. You save it to disk first, THEN you write it to the PLC. At download time, the new instruction got assigned a new Edge and/or IID and you are notified via the Output Window that these got assigned and the program was changed. This means that what is on disk is different (it has the unassigned Edge/IID) than what is in the PLC. When nagged at closing about this difference, you do NOT save it to disk.
Scenario #3 based on what you are describing what you are doing:
If you are writing the same disk project in different PLCs that have different projects, and you are doing a RUN mode update, any duplicate Edge and IIDs must be remapped based on the old PLC project's usage of Edge and IIDs. So with different PLCs with different Projects, but downloading from the SAME DISK project, in RUN mode, those can be completely re-mapped and be completely different.
I know this is clear as mud. The key point is that RUN mode edits are CRUCIAL for those who really need it to behave truly "bumpless". I can't have a STREAMOUT instruction with IID 5 in scan 1234 be pending during a RUNTIME edit, and when that asynchronous instruction finishes, IID5 is now tied to a STREAMIN instruction with the same IID (bad things will happen) at scan 1235. The IIDs are there SPECIFICALLY to ensure that RUNTIME edits don't mess things up. Edge Bits are similar, but they also maintain the "edge state".