Calling a function with WP_Query only ever brings the first result

If you switch to get_posts you don’t have to worry about resetting the loop.

function SliderBuilder( $categoryID ) {

    $args = array (
            'cat'            => $categoryID,
            'posts_per_page' => 3,
    );

    $posts = get_posts( $args );

    echo $categoryID;

    ?>
    <ul class="blog-slider" id="blog-slider">
        <?php

        foreach ( $posts as $post ) { ?>

            <li class="blog-slide" onclick="location.href="https://wordpress.stackexchange.com/questions/243846/<?php echo get_the_permalink( $post->ID ); ?>";">
                <div class="blog-thumb">
                    <?php echo get_the_post_thumbnail( $post->ID, 'small-thumbnail' ); ?>
                </div>
            </li>

            <?php
        }

        ?>
    </ul>
    <?php
}

SliderBuilder( 2 );
SliderBuilder( 3 );