Most companies I know talk about how they like to promote from within. They should, it is a great policy. You get the benefit of having someone who knows the culture and the company, you demonstrate to people that they can advance (which builds engagement), and - done well - you can make fewer hiring mistakes.
With all these benefits, I still see way too many companies that hire externally - for both lateral moves and promotions. Why?
Before I explain my theory, I should be clear that this is purely an opinion based on experience and anecdote. I have no empirical data that supports my belief. If you have any that either proves me right or wrong, let me know.
I believe managers hire from the outside because the "grass is always greener on the other side of the fence". For internal employees, they know (or can find out) the individual's weak spots and struggles. They may be ready, but because the manager knows these faults, they are hesitant.
The outside candidate has a resume that has been polished to make them look perfect. They get to practice interview questions that focus only on their successes. They hype themselves up and tell you all the good.
Of course, the external candidate has faults too. But the manager doesn't know what they are. They aren't on display for them to see and remember. It's like looking at pictures of two cars. The first one is shiny and new, placed in the right lighting with a beautiful background. The second is a slightly used car, but you can see the dirt, the lighting is horrible and the picture was taken in a dirty parking lot.
Those pictures don't tell you anything about performance, but it sure impacts how you THINK the cars will perform.
Managers have to be aware of this unusual bias and actively work against it when making decisions. In my mind, unless the external candidate is significantly better than the internal, you are always better off with the internal candidate - known warts and all.