display news with pictures 3 small and one large (loop)

I don’t know why have you put $b%4==1 condition.

You can simply check for $b==1.And one more thing I would suggest is to use if and else both.So code would be something like this:

 <?php
    $b=1; 
    $args = array(
        'tax_query' => array(
            array(
                'taxonomy' => 'gens', 
                'field' => 'slug', 
                'terms' => 'newsgen' 
            )
        ),
        'post_type'=>'',    //add your post type name 
        'posts_per_page' => 4, 
        'orderby' => 'asc', 
    );
        query_posts($args);
        while ( have_posts() ) : the_post(); 
    ?>

    <?php 
        if($b==1) : //change in condition
    ?> 
        <div id="news-big">
        <?php
        $image_url = catch_that_image();
        $image = thumb($image_url, 209, 97);
        ?>
        <a href="https://wordpress.stackexchange.com/questions/175028/<?php the_permalink(); ?>">
        <img src="<?php echo $image['url']; ?>"/></a>
        </div>
    else: //else is added here
        <a href="https://wordpress.stackexchange.com/questions/175028/<?php the_permalink(); ?>"><div class="news-small">
        <div class="container-small">
        <?php
        $image_url = catch_that_image();
        $image = thumb($image_url, 136, 75);
        ?>
        <a href="https://wordpress.stackexchange.com/questions/175028/<?php the_permalink(); ?>">
        <img src="<?php echo $image['url']; ?>"/></a>
        </div>
        <!-- End Thumb Container -->
        </div>
        <!-- End of news-small div -->  
    <?php endif; ?>
    <?php
        $b++;   
        endwhile; 
        wp_reset_query();
?>

Try above and let me know the output.