CRM-2176 during 1.8 development intruduced a "return true;" after civicrm is initialized, but before the API files are included. This means that any drupal modules that get initialized before civicrm that try to initialize the API, will only end up initializing civicrm, and NOT the API. This includes any modules with a negative weight in the system table, or any with a weight of 0, but a name that starts with A or B. For modules that get initialized after civicrm, this function will already have been called once and so calling it again with $requireAPI = true WILL include the API files since the initialization of civicrm is skipped.
My fix is simply to remove the 'return true;' I've seen no adverse effects and I'm guessing that it was simply a mistake to introduce the line in the first place.