The BJP was never really in the running because of its near zero presence (with or without allies) in over 180 seats and marginal presence in another 100. Take the allies off in the rest of the seats and what we have is BJP effectively fighting about 200 seats -implying, that it would have needed a strike rate of over 80% to even reach 160 seas on its own. Now that was always very improbable.
You could say the Congress has been lucky the second time round with many things falling in its favour. But the geographical spread probably was the main reason.