Some nice research here!
Comments:
* As clearly can seen from a comparison with 'All LUC chars dead' (6,50 MB) and 'All Luculla chars alive' (6,33 MB) from test session I, the difference of 'dead + destroyed' to 'destroyed' in session II comes from the story progress, only triggered by scripted death, not by scripted destruction of the character! The story death of characters obviously adds 0.17 MB to the save file in both cases: 'dead' and 'dead + destroyed'. Without story changes both operations would have produced the same save file size.
This is most likely caused by the Osiris tracking databases that save (in multiple tables) which character GUID-s were killed, etc. They apparently don't clean up the entries when the character is destroyed, hence the difference.
Instead of decreasing the save file size, it even slightly raised the size for local characters and notably increased it for global characters
If you think about it, it's quote logical. The game doesn't remove a character's handle after its death, as it has no way of knowing whether scripts will manipulate (revive/etc.) the character after its death. This is also the reason why there is no automatic cleanup/GC, as it would subtly break things if the player happened to be at the wrong place at the wrong time. When a character is destroyed, it is removed from the CharacterManager (and its items from the ItemManager) completely, which also removes the variables, hence the save size reduction.
A possible optimization would be adding a flag to the RootTemplate to indicate that the character can be safely destroyed without consequences, which would allow the engine to clean up the majority of characters. I'm not sure if characters lingering there forever is a problem in practice though, a roughly ~1M save size growth [by killing all characters on all maps] will likely not matter.