I think we agree that the AI picks the wrong engagement distance at times.
And this error can contextual or not. It's can be either "Always too reckless", "Always too cautious", or "Too reckless/cautious given the context", with context being summarized into something like 'confidence level', which in a duel would be mostly determined by flux, DP values and armor values of the ship and its opponent.
I think most instances of poorly chosen engagement distance is contextual, even when it seems to be constant.
I don't think your Heron example is
necessarily an example of a ship being "always too cautious", or necessarily of a poorly chosen engagement range. It's perhaps an unusual edge case. And if you make small tweaks to the code for unusual edge cases, you will likely produce many more edge cases, you just don't know when or how many. It turns into a game of whack-a-mole.
~

(gryphon_Reckless.jpg)
A better 'poster boy' for this family of glitches might be what new players do with the Gryphon, equipping it with missiles and some PD, and then thinking it useless when it just keeps ramming into things and dying. The default load-outs for the Gryphon all have kinetics, but that doesn't prevent the 'noob trap' of expecting a missile ship not to go insane if equipped like one. And I don't know any explanation for that, other than that some weapon types take precedence over others, and others will be completely ignored. I.e, "PD > Missiles", as you put it.

(apogee_Reckless.jpg)
I have another example lying around. The pulse lasers on this apogee here will turn it into as much of a ramming ship as the Gryphon. I don't have a good explanation of why, as it can't even shoot straight ahead with them. And for your theory to explain it, it has to account for why the beam weapons get ignored once the pulse lasers are put on. So "Guns > Strike craft > Point defense > Missiles" isn't enough, the list would also need beam weapons crammed in there.
~
I think we agree that your initial theory has not been disproven. And I think we agree that some of the code needs to be looked over. But I think it's hard to make a case for it, given the current evidence is mostly outliers, and given that there's no problem with the default variants.