If I were using Remix, I'd probably trigger GraphQL queries from route loaders, one doesn't really obviate the other. Yes, there are challenges with using GraphQL well, but there's no inherent tension between it and the loader approach.
Maybe thinking through what I was thinking a bit more:
GraphQL isn't the only option for preventing overfetching, and has some downsides. For example, the pattern Remix uses.