Say you've got an employee that shows up on time, does exactly what he's told and no more. He's entirely forgettable aside from the stupid things he always forgets to do, like check coolant level after lunch even though he's been told numerous times to do so. He has absolutely zero desire to learn anything, just wants his check and to go home. Which is fine; He's making good parts.
Now say you've got a chance to hire a guy who is a known entity, is smart, is willing to start at the bottom and learn the trade, and is hungry. He is much more personable than the other guy, and stands a good chance to be a star employee.
You don't have enough work for both of them.
Do you fire somebody that hasn't done anything wrong, to hire a better option?