The problem we have now in your development process, is that there are a few people, who don't make team more cross-functional.
So, sometimes this people can become a bottleneck for some parts of the project. They don't like using Wiki for the shared knowledge issues, they don't post enough comments to their tickets in Issue tracker systems.
Because of this problems, our management sometimes can not fire some developer(even if they want it very much), because without him we will spend so much time to understand what he has done.
I think, that this problem can't be solved with just code-review, because sometimes it is impossible to notice, that there isn't enough documentation produced for the ticket, until you will face the problem.
Pair programming can't be applied in our circumstances, because the team is distributed.
We talked a lot about this problem at our meetings, but it seems more like conceptual problem. Can we change this person's attitude? How this problem can be solved?