There's a number of distinct variations:
* No normal/expensive - same data for both
* Only normal/expensive - same data for both, but read from normal/expensive
* Both normal/expensive - different data for both
* Normal/expensive is false (rather than nil/missing) - doesn't exist for the difficulty which is false.
OR-Nodes is generating a technology where only normal is set, which Factorio thinks is perfectly valid.
It (should, if I got it right) implement full support for recipe/technology difficulty, up to completely divergent recipes/technology effects depending on difficulty.
Edit: Just to be clear, Battery Pack and OR Nodes are both properly parsing perfectly permitted prototypes, it's the fact that they're creating one that's causing issues.