8259A End of Interrupt (EOI) signal question
There are two physical instructions here. IRET is a branch/jump and advances the program counter, pops some items off the stack, etc to return to the previous task that was interrupted. You use IRET in more scenarios that handling interrupts, including CPU exceptions and external interrupts that don't neccessarily go through the interrupt handler peripheral. 

IRET reference


  Returns program control from an exception or interrupt handler to a program or procedure that was interrupted by an exception, an external interrupt, or a software-generated interrupt. These instructions are also used to perform a return from a nested task. (A nested task is created when a CALL instruction is used to initiate a task switch or when an interrupt or exception causes a task switch to an interrupt or exception handler.) See the section titled "Task Linking" in Chapter 6 of the IA-32 Intel Architecture Software Developer's Manual, Volume 3.


EOI is a command given to the PIC (interupt controller) to clear the current interrupt and allow the PIC (8259A) to issue more interrupts. There is no requirement that there is only one PIC or that all system interrupts/exceptions/etc come from that one PIC so you must explicitly signal to the peripheral (whether a seperate IC like in original 8086 or integrated in one south bridge or on-die peripheral in modern x86)  to change state.

It may be easier conceptually to think of the 8259A as a seperate specialized microcontroller that happens to be ubiquitously attached to your CPU