The most common: failing basic technical questions. And I'm not talking about the puzzles that Google gives.
You'd be surprised how hard it is to find quality engineers local to you. Utilizing a remote workforce is more important than ever.
Second most common: poor communication skills.
Third would be not being the right cultural fit. This one is tricky to judge someone on just from one meeting. Software engineers are often nervous at interviews, so you can't figure out the cultural fit aspect from that one interview.
I will also add that where I work we do this trick (they also did it on me, back when I was a candidate).
During the technical questions/puzzles part, we ask the candidate a question we already know he saw earlier, but he doesn't know that we know.
Many candidates take this golden opportunity to show mad skills, and act like they haven't seen the question before.
These are not the candidates you want.
So #1, be honest.