OK, here's a micro-mod that reproduces the problem.
BACKUP ~sectype_demo/backup~
AUTHOR ~blah~
VERSION ~v1~
AUTO_EVAL_STRINGS
ALWAYS
// copy over a fresh msectype.2da for reliable reproducibility
<<<<<<<< .../stratagems-inline/msectype.2da
2DA V1.0
4294967296
RES_REF
None 4294967296
SpellProtections 27980
SpecificProtections 27981
IllusionaryProtections 27982
MagicAttack 27983
DivinationAttack 27984
Conjuration 27986
CombatProtections 34558
Contingency 34559
Battleground 34560
OffensiveDamage 34561
Disabling 34562
Combination 34564
Non-combat 34565
>>>>>>>>
COPY ".../stratagems-inline/msectype.2da" "override"
END
BEGIN "component_1" DESIGNATED 10
ADD_SECTYPE "demo_sectype" "a_string"
ADD_SECTYPE "demo_sectype" "another_string"
BEGIN "component_2" DESIGNATED 20
ADD_SECTYPE "demo_sectype" "a_string"
COPY_EXISTING "msectype.2da" "msectype.2da"
REPLACE_TEXTUALLY "demo_sectype.*" ""
ADD_SECTYPE "demo_sectype" "another_string"
Component 1 attempts to install two copies of the same sectype. If you run it, you get 'MSECTYPE.2DA [demo_sectype] already present! Skipping!', and only one copy of 'demo_sectype' added to msectype.2da.
Component 2 does the same, but in between the two ADD_SECTYPEs, msectype.2da is copied to the game directory and the new sectype is deleted. If you run this one, it installs two copies of 'demo_sectype' (in 'override/msectype.2da').
My inference is that while ADD_SECTYPE always adds to the override version, it preferentially checks the game-directory version when it looks to see if the sectype is present already.