Although I agree with all your points, I think there is a potential caveat with grep: it is not very token-efficient as it can return lots of matches, filling up the agent's context.
A potential solution for these indexing systems is to maintain several indexes (one per branch for example). Idk how they handle code changes though.
But I think the bigger negative signal is that these tools have been around for roughly as long as LLMs have, yet they are still barely used. Maybe because they are not that useful ?