The question is about 6502 instructions that take an extra cycle when address calculation carries over into the high byte of the address. This affects addressing modes Absolute,X, Absolute,Y, Indirect,Y. I suppose it also affects the relative branches. I'm going to call such a cycle a penalty cycle (I have seen this term in various emulator source code, and there's no better words I can think of).
Going from this document, Many instructions take a penalty cycle to manipulate the high byte of the effective address, denoted by a
+ in the last column. Initially, I thought that all opcodes that needed to do this incurred a penalty cycle. But the general pattern seems to be that if it needs to write something to memory, then it doesn't incur a penalty cycle.
Why is this? Can the high byte of the effective address sometimes somehow be incremented for free? I don't see how, because the 6502 uses its ALU to generate the carry, and also to add the carry into the high byte.