There is no such thing as "best approach" in engineering: every choice is taken considering requirements, context, organizational concerns. The question needs to be elaborated a bit more...but in general:
an API gateway acts as a façade towards the platform internals: it lets client to consume your services through a consitent interface (in a nutshell: a single base URL) and manages cross cutting API management concerns, such as authentication, composition, rate limiting etc
Load balancer/reverse proxy can be seen as a "baby API gateway" since it offers to map ingress routes to backend services, but afaik no prodcut offers the same flexibility of an API gateway, which is designed to manipulate requests and responses on behalf of core microservices
A load balancer/ reverse proxy is not always meant as a replacement of an API Gateway: the latter still needs to horizontally scale, so you will bootstrap or shutdown replicas as request load changes, so a load balancer can route requests towards each replica
API gateway is especially useful when it can serve 3rd party applications (public API) or client rendered UI (SPAs, mobile apps, desktop apps)
Server-side rendered UIs are more well suited to directly consume data from core microservices as they are not exposed outside the boundaries of the platform. Also client rendered UIs might need something more sophisticated than an API gateway (which basically only does mapping beetween ingoing/outgoung calls and applies processing pipelines) because some applications need to perform complex presentation logic. This is the case where Backend-for-frontend pattern is applied
So the answer to the question involves some evaluation about the composition of the clients, the infrastructure architecture as well as considering the development process, since every change in the platform core API might involve changes in the edge layer