The point is that the same Instruction Set can be used differently.

And in practice, for efficiency purposes, that may matter a lot. An optimizing compiler can (and will, e.g. [GCC]( with `-O2 -mtune=native`) produce *different* machine code for the same ISA, depending on the target processor. So the code optimized for an Intel processor is not the same as the code optimized for a AMD processor, even if it uses the same ISA. Machine code optimized for one will  not be the fastest code on the other one.