Ok, found out what was going on, according to Why does gettext translate an empty string to the .po header text? and http://www.gnu.org/software/gettext/manual/gettext.html#MO-Files
Having the original strings sorted enables the use of simple binary search, for when the MO file does not contain an hashing table, or for when it is not practical to use the hashing table provided in the MO file. This also has another advantage, as the empty string in a PO file GNU gettext is usually translated into some system information attached to that particular MO file, and the empty string necessarily becomes the first in both the original and translated tables, making the system information very easy to find.
So I can't avoid checking the string.