It is pretty hard to get true seamless looping from an MP3-encoded file. It can be done, but it requires that the bit reservoir be disabled, and that your source data is phase-continuous at the beginning and ending frame boundaries. You probably don't want to go there.
Some of the gap you're hearing is an unavoidable consequence of the overlap window used in the MP3 decoding process, and yes, at least some small part of it *is* at the start of the file. Part of it may also be due to the quirks of the encoding and/or decoding packages -- they're all a bit different, and most seem to add more padding than is really necessary.
Try the LAME encoder with the --nores option; that may help. You can also try truncating the file to remove the first and last frames... but that will most likely just replace the gap with a loud click.
-- john
------------------------------------------------------
------------------------------------------------------