(Unfortunately, I do not have sefarim with me at the moment - I am traveling - so I cannot cite all my sources right now.)
Why is this allowed, then? Is there a preference to call a Levi over a Gadol?
As @JNF pointed out in his fine answer, calling a Levi when there is no Kohein does not seem to be correct according to what we find in the Poskim.
But as the OP has pointed out, the minhag to call a Levi in that case is widespread, and apparently some have approved of the practice. That being the case, perhaps we can find some justification for calling a Levi:
For K'HT there is a takana "מפני דרכי שלום" to go in order: Kohein, Levi, Yisroel, so there should not be an argument about who deserves the first עליה - we follow a special order that no-one can argue with.
If so, it's more logical to go with Levi next if there is no Kohein - again for darchei shalom, so there should not be an argument about who deserves the first עליה. The case of a Levi but no Kohein is a bit of an 'edge case'- so minhag can prevail there. The minhag to give it to a Levi makes a great deal of sense and seems more in the spirit of the original, explicit takana.
To take it a step further, there is a סברה to uphold this minhag:
Why should the whole takana collapse because there is no Kohein? Calling a Levi first still maintains darchei shalom.
Unless we can find a גמרא that states explicitly otherwise - that we should not call a Levi - it seems far-fetched to demand that a shul change its standing minhag simply because the poskim favor a different minhag, when the shul's minhag is entirely logical and reflects the spirit of the halacha.
One problem with this סברה might be that we are always concerned that someone who is not a Kohein could be confused for a Kohein if they are called first. Therefore we always say "ישראל במקום כהן" when a Yisroel is called instead of a Kohein.
We would certainly have to say "לוי במקום כהן" if we called a Levi, but perhaps that's not enough: Since people know that a Levi is special, they may confuse the Levi for a Kohein regardless.
A greater problem with this idea might be that although the reason stated for giving a Kohein the first עליה is because of that takana, the fundamental reason for choosing a Kohein over someone else reverts back to "וקידשתו" - from which Chazal learned that a Kohein should always be honored by putting him first. However "וקידשתו" does not apply to a Levi, and applying it to a Levi might actually be considered insulting to Kohanim in general.
All told, I tend to agree that calling a Levi first when there is no Kohein is not a correct minhag:
It could cause confusion about who is a Kohein and could even be an affront to the Kohanim in general.
Chazal told us to honor the Kohanim. When there is no Kohein, everyone is equal in that respect, and so we call the תלמוד חכם.