There's no one rule fit's all here. It all depends on the use case and tech stack you have.
Preparing right url's upfront in AEM is a great beginning, to avoid any redirects in first place.
Routing to correct url's via Apache is a solid way to go on from here.
Where Apache lack's functionality or get's too complex, CDN / Varnish / NGinX will help.
Once these are in place, redirects will be needed as project life goes on, they can be offloaded to the most appropriate layer.
Generally for few redirects with minimal traffic Publishers are good, once we start hitting thresholds might be good idea to move to CDN or Apache.