Sometimes the AI can't call someone up because they are cap-locked. Sometimes the AI won't call someone up because that player will need to go through waivers when sent back down. Other times there's no reason the couldn't call someone up, but they just don't do it.
I've also noticed that when a goalie gets injured, the AI will call up a 67 overall prospect from the AHL, who won't have to go through waivers when sent back down, instead of calling up a 79 overall veteran from the AHL, who will have to go through waivers. Why even have the veteran in the AHL, taking playing time away from prospects, if you're not going to use him in the NHL when there's an injury?
The AI seems way, way, way too afraid of losing players to waivers, even when that player is of very little value. For that matter, the AI very, very rarely claims players off waivers, so they really shouldn't have much fear of that at all.