On reflection, I don't think they're right for each other. It's all very well rushing out and panic-buying a ring, but that doesn't change the fact that he does not want to be married.
People who are ready for marriage and people who are not, and may never be, should not be marrying one another.
The gf sounds very mature: tuned in to what she wants, tried to have a discussion, and then thought things through for a few more months after the failed talk, in order not to do anything rash. This is someone who is a good communicator, built for partnership and ready for it. OP's son is not anywhere near this level of readiness for marriage.
Her son also showed very poor communication skills in shutting down her wholly reasonable attempt to have a discussion, not to mention a tendency to dismiss his partner's feelings and valid concerns.
It's OK to not want marriage or be ready for marriage, and it's OK to have work to do on yourself, as he does, in terms of communication and sexism. But he is not marriage material yet. He should not be marrying anyone - quite aside from the fact that he doesn't want to. Offering to go out and buy a ring is more proof of his lack of insight and maturity. Making a purchase changes nothing. After paying, he still wouldn't want to be married, isn't ready for it, and doesn't know when he will be.
He should be looking inward to ask himself why he didn't want to commit; why he refused to discuss it with her; why he chose not to have open and honest communication with her. That would be much better than trying to force a marriage that isn't right.
It's a pity that the girlfriend didn't do this after two years. She's wasted a year. Post-25, I think people should know if it's a yes or no after two years.