Why might conditionals not work on a page?

Conditional tags mostly derive from and rely on main query.

  • is_page() function calls
    • $wp_query->is_page() method
      • which checks $wp_query->is_page property (set during load) and some more stuff if you asked to check for specific page.

So the likely reason for conditional tag not to produce expected return is issue with global $wp_query, for example it getting erased and overwritten with query_posts() call.