We can actually take a look at this in the batting average and how it corresponds to RBIs, etc. Let's start with your assertion, but begin where you said we shouldn't -- the Cardinals, and then broaden out. The Cardinals with the most RBIs:
And the Cardinals with the best batting average:
And the Cardinals with the highest OPS:
On the Cardinals OPS is a better indicator of RBIs in this small sliver than batting average, and both fail where we really get an indication of RBIs. Allow me to offer you a few examples. Of the 22 players who had 100 RBIs, eight of them had a batting average better than .300. Of the top 22 batting averages in baseball, 10 drove in more than 100 RBIs. But, of the top 22 OPS in baseball:
-- 14 had at least 100 RBIs.
-- 20 had at least 80 RBIs.
And that was regardless of where they hit in the order because some of them are going to be leadoff hitters in the NL and get fewer at-bats with runners in scoring position, and some are going to be cleanup hitters behind a great hitter who has already cleared the bases. Yuli Gurriel amost hit .300 and had a strong OPS and had more than 100 RBIs. He also had 156 at-bats with runners in scoring position. Jose Abreu didn't crack the top 50 for OPS, and hit less than .300 and yet had 123 RBIs. How? Well, he had more chances than any other hitter in baseball with 166 at-bats with runners in scoring position.
The real reason why the Cardinals offense struggled is, you're right, locked within their lack of RBIs, but it's not the average that cost them, per se. That's only part of the equation. The Cardinals lacked opportunity. Marcell Ozuna led the team in at-bat with runners in scoring position with 134. That tied for the 34th most in the majors. And he missed an entire month. What does that say about the Cardinals' ability to get on base ahead of Paul Goldschmidt? Not much, really. It says they need to get on base better, and the number that shows us that isn't just batting average.
It's the O in OPS.