is_tax() function not working as expected

If you take a look at this part of the WP_Query class:

            switch ( $tax_query['taxonomy'] ) {
                case 'category':
                    $this->is_category = true;
                    break;
                case 'post_tag':
                    $this->is_tag = true;
                    break;
                default:
                    $this->is_tax = true;
            }

then it looks like on category archive pages where is_category gives true then is_tax is false.

So it looks like you will have to use a mix of is_category and is_tax 😉

Update:

Take a look at this ticket:

is_tax() returns false when is_category() or is_tag() returns true

http://core.trac.wordpress.org/ticket/18636

It’s status is currently closed with wontfix!