A few points about the two types, in case you have not used these much.
You choose whether an instance should have a public IP at the time you are launching it
The address will persist across reboots but not a stop/start
These come at no extra cost
You can associate/disassociate an EIP with an instance at any time after it has been launched
An EIP remains associated across reboots or start/stop operations
EIPs incur cost (when kept unused)
EIPs can be migrated between EC2 instances
In light of the IPv4 deficit we are facing today, AWS is cleverly trying to incentivize sensible provisioning by charging for any dormant EIP resources.