After mulling it over for a day or so, I lean towards the idea that Mueller blinked.
He just couldn’t bring himself to enact the logical consequences of the evidence he accumulated on Trump’s actions in reference to the Russia investigation. Was he ever going to indict a sitting president? Maybe he just couldn’t bear the astonishing sustained brutal assault on the Justice Department and the intelligence services. “One thing about this president: he doesn’t care about collateral damage”. There is no other logical explanation: the evidence of Russian contacts is extensive and definitive; and of course, Trump and his defenders have never bothered to disprove any of it, because they can’t. Mueller identified Russian hackers down to the location of the building from which they operated in Moscow. In a stupid moment of an interview with Lester Holt, Trump admitted he fired Comey because of his investigation of those Russian hackers. That is the very definition of obstruction. But for some reason Mueller just couldn’t take that last step.
I’m sure he hoped Barr would take the burden, and I’ll bet he hopes Congress takes it up if Barr doesn’t (he won’t). Perhaps Mueller judged that in the current political atmosphere, little would have been served by indicting Trump and throwing the entire country into turmoil. Perhaps he hopes that in 2020 the situation will correct itself. But by constantly attacking Mueller (a lifelong Republican) and the FBI and the Justice Department and some of the most reputable criminal investigators in the country, Trump has already done more damage than anyone could have imagined on the day he was elected.