It's not an implementation detail, because the decoder runs before the execution of every instruction. If we're going to say that NOP increments IP by one, then we should also say that ADD "stores in dst the addition of src and dst, as well as incrementing IP by the length of the instruction", and JMP imm "increments JMP by imm + the length of the instruction".
I'm not disputing the total effect. I'm asking if you'd rather describe ADD and JMP in this manner, in order to say that NOP does not in fact do nothing.
Love the pedantry here. I'm currently at: no op code does anything, it's all fancy effects in the hardware that can be described in arbitrary detail, which somehow allows me to cause these letters to appear on your screen.
There was a boy
A very strange, enchanted boy
They say he wandered very far
Very far, over land and sea
A little shy and sad of eye
But very wise was he.
And then one day
A magic day he passed my way
And while we spoke of many things
Fools and kings
This he said to me:
"The greatest thing you'll ever learn
Is just to love and be loved in return."