Network interfaces are exposed for many service you spin up within your VPC, this includes things like load balancers, databases along with normal EC2 instances.
Network interfaces can be considered the same as standalone Ethernet card in the real world. When you move a network interface between machines it can keep its public, private and mac address.
Under normal circumstances assigning an EIP to an instance, is actually just assigning an EIP to that instances primary interface. A primary interface is created automatically when creating an instance. [AWS Docs]
This does get a little more complicated when you include 'ec2-classic' mode, as these instances don't have the concept of network interfaces, as they are pre-vpc. In this mode, EIP's are attached to the instance, not the interface. More details on the differences between the 3 'vpc modes'.
One other thing to note is that you can assign multiple interfaces to the same instance, so there will be some situations where you will need to explicitly search by interface, and not instance.