В каком случае onDestroy вызовется без onPause и onStop?

Посмотреть в Telegram: @AndroidSobes/291
Такое может произойти в единственном случае, когда метод finish() использован в коллбэке активити onCreate().

Всё дело в том, что onStop и onPause – коллбэки завершающих фаз для onStart и onResume соответственно. На момент вызова onCreate() эти фазы еще не случились. Подробнее про жизненный цикл активити читайте в ранней публикации.

Согласно документации, в любой другой нормальной ситуации вызов этих коллбэков гарантирован.