Custom post type archive category page results in 404

Two things:

  1. You shouldn’t be using ‘category’ as a slug, since it’s already built into WP and thus is reserved (http://codex.wordpress.org/Function_Reference/register_taxonomy#Reserved_Terms)

  2. Pretending for a moment that it isn’t reserved, the base URL structure wouldn’t contain the post type in front of it.

EDIT

  1. I just realized you didn’t set the archive slug itself. Instead of has_archive = true, set it to has_archive="campaigns" (to match your other slug). That should set your permalinks to match.