Ok, after a little more digging, it seems like the problem is that the main query for returning posts is never fired.
I used define( 'SAVEQUERIES', true ); to show all of the queries there were executed for each page. On a regular archive page that is working correctly, I see a query that looks like this:
SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
WHERE 1=1
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
ORDER BY wp_posts.post_date DESC LIMIT 0, 10
Followed by SELECT FOUND_ROWS(). However, on my taxonomy page (the one that comes up blank), there is no query that is selecting from wp_posts. I still see the SELECT FOUND_ROWS() query, but the query immediately preceding isn't getting any posts. It looks like this:
SELECT wp_term_taxonomy.term_taxonomy_id
FROM wp_term_taxonomy
INNER JOIN wp_terms USING (term_id)
WHERE taxonomy = 'my-custom-taxonomy'
AND wp_terms.slug IN ('taxonomy-term')
This is really baffling to me, and if anybody has any idea what could be the cause of this, I would really appreciate it. Thanks.