Imagine how differently this would have played out if 'Rick' had someone at their technical level to talk to. They could bounce ideas off another person and they could help field questions from the team when busy. It sounds like Rick made some potentially questionable technical decisions - but with another very experienced dev around they could keep each other honest and on point.
The problems that come from having only 1 junior dev on the team are obvious - that person will feel alone and out of their depth, and like they're bothering everyone with their problems. But there are similar issues from having only 1 senior dev on a team. That person will naturally try to take responsibility for every aspect of your technology stack. They will do that naturally because the only other option they will see is to let mistakes slip in to the product. And a technical leadership position is a leadership position. Being a good technical leader requires time away from programming to mentor, code review and brainstorm. It requires you to hold meetings, support your team and keep others accountable to standards. The people side of that is a set of skills many programmers don't have.
Ultimately by firing that person you're saying that your team cohesion is more important than quality in the product. Thats a totally reasonable choice. Its also an option that a skilled manager would be able to bring Rick on board with. "Hey Rick, over the long term we want to build an amazing team. You're the most skilled person we have, and we think in the long run the mentoring you've been doing is going to provide more value than getting this particular iteration of our product out the door. We want you in on the long term vision of our company having great engineering, which might mean this next release slips - but we think extra mentoring will be worth it. What do you think?" ... Etc.