drupal_lookup_path() uses global $language_url variable which is always set to default if language was not set through url prefix. Please note that $language_url will always be different than current language if language was set by browser language, user preference or session variable. This has two implications if alias language is different than $language_url:
- aliases for source paths are not found
- source paths are not found for existing aliases resulting in 404 errors
Changing global $language_url to global $language seems to solve the problem.