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.