Gateway endpoints exist only for S3 and DynamoDB, work by adding a prefix-list route to the route table, and carry no hourly or per-GB endpoint charge — which makes them the cheap default for those two services. Interface endpoints put an ENI in the subnet and bill per hour and per GB, so they are what you use for the many services that have no gateway option. A NAT gateway would send the traffic out and charge for it.
Official docs