Yes, umpires make weak or incorrect calls all the time. I spent several seasons as an ump and I blew my share of calls, so I accept that.
But tell me this, what is the problem with the umpire simply calling out "infield fly" or not, depending on his judgement, while the ball is in the air? No different from saying "out" or "safe" or "ball" or "strike"? In the case I cited all the ump had to do was yell out "infield fly the batter is out" and everyone would be clear about his judgement. Is there a problem with this that I'm not seeing? Why keep it a secret until after the play is over?
ArmWhip, the umpire SHOULD be calling the IFF exactly as you described. I don't think anyone is saying otherwise. Call it in real time. I believe the argument is that if the umpire blew it and did not call it in real time, the umpire is still required to enforce the IFF if it is identified before the next pitch. When the umpire does enforce it after a delayed call, he should be correcting any negative impact his delay caused.
Although I am a long time umpire, I also used to coach for many years and I know of twice that an umpire enforced an IFF after the play was over and cost me both times. And the umpire didn't want to hear otherwise. That is bad umpiring and not the rule books fault.
By rule, the IFF should be called when the ball is at the top of its flight. By rule it should be a fly ball that can be caught by ordinary effort [umpire judgement]. If the umpire blows the call, maybe he/she forgot how many outs or where runners were, the umpire is required to fix it. However, if your lead runner got tagged out because of the delayed call or something like that, rule 10.3.3 [USA] says the umpire has to undo that problem he created.
So if the rule book is followed by a real time call or by implementing a delayed call and accounting for the jeopardy that the offense or defense was subjected to, everything should be OK. Its when there is a delayed call that is not properly assessed and corrected or poor judgement where a ball that couldn't be caught by Derek Jeter is call IFF, that we have problems. The rules should work. Its the human error that will throw a wrench into the works and then add in a stubborn umpire and we get into problems.