I agree it's a little odd.

if ($action == 'reply' && !acl_gets(array('u_pm_reply', 'u_sendpm')))
{
error
}
else if (!acl_get('u_sendpm'))
{
error
}
would be much clearer