I agree with your instincts, singletons are an anti-pattern. I’m not sure why the Google samples use them, except that sample code in general tends to simplify wiring details like this.
I think it’s pretty common to let your DI library handle scoping for service objects like repositories. It probably makes sense for a lot repositories to be limited to some notion of “logged in scope,” since they presumably need some sort of auth token to make requests.