Starting a single server with,
gfsh> start server --name=rest-server --start-rest-api=true --http-service-port=8080 --hostname-for-clients=%public_ip_addr%
will launch a server.
http://%public_ip_addr%:8080/gemfire-api/v1/servers will return the [ "http://%private-ip%:8080" ]
The documentation states "Setting a specific hostname-for-clients causes server locators to use this value when telling clients how to connect to this cache server. This is useful in the case where the cache server may refer to itself with one hostname, but the clients need to use a different hostname to find the cache server."
The /servers endpoint should be returning the hostname-for-clients param (in this case, %public_ip_addr%) as that is how clients will connect to those servers, rather than the internal/private IP address.