On this page:
http://api.drupal.org/api/drupal/includes!mail.inc/function/drupal_mail/7
the param $params is described as:
$params: Optional parameters to build the e-mail.
This fails to mention that $params must be an array. While this can be surmised from the function signature, i think it would be best if this was reiterated where $params is described.
(Just spent some time debugging this, someone failed to notice that params must be an array and passed in an object, breaking hook_mail_alter()-s.)