Fimbulvetr
Emperor
The idea behind this was afaik that you should get a bonus if you research more than the absolutely required number of prereq techs, in which case the first OR tech should give no bonus.There is a mistake in the tech diffusion code. The problem is the m_iTECH_COST_FIRST_KNOWN_PREREQ_MODIFIER.
If you set in TechInfo.XML for a tech that requires A and B by
i) A as OR-tech and B as AND-tech
ii) A as AND-tech and B as AND-tech
it should make no difference for the research cost. But with a value != 0 for m_iTECH_COST_FIRST_KNOWN_PREREQ_MODIFIER this is not true. In case i) you get a bonus for A in case ii) you will get none.
All you need to do is set TECH_COST_FIRST_KNOWN_PREREQ_MODIFIER to 0, because giving a bonus to the first OR tech is exactly what this variable was meant to do. I agree it's not very intuitional but it's there to mirror standard BTS behavior.