which pushes the cost onto innocent third party service providers
The records higher up the chain (e.g. on the root and tld servers) can still have long ttls and be cached appropriately even if the records at the bottom of the chain have short ttls. so the only person it's really "pushing costs on" is the end users dns provider (usually thier ISP).
The fact that google give away dns service for free without trying to inject any advertising makes me think that the "costs being pushed" onto the users ISP are pretty trivial.
primarily, that it redirects based on where the user's DNS resolver lies, which may be on the opposite side of the country from the user
That is certainly a disadvantage, more so for some sites than others (if you only have a handful of locations per continent then it's probablly not going to make much difference for you).
There are proposals to fix this issue but it will take time for them to be adopted.
For web-based traffic, properly implemented redirects are typically the best option.
Redirects are a good choice for downloads and possiblly videos (for videos custom page generation also seems to be a common soloution) but if you try and use them for pages you will end up with users storing permanent references to individual servers in their bookmarks and you also have the problem that you have to serve the redirects from somewhere (which brings us back to the problem of poor retry handling). IMO these issues make redirects an unacceptable soloution for geographic detection and fallback with web pages.
For other services with a dedicated client, there are much better options that can be implemented, and can also provide a much better user experience.
Agreed if you have a dedicated client you have a lot more options.