WP_Query offset is returning post from prevois loop

Fixed it. After all it was really dumb error on my part.
The WP_Query() does not filter out unpublished posts by default. The internal archive page query does filter these posts out.

I had to add 'post_status' => 'publish' to the $query_args array and everything is now working as expected.

The final query then looks like this:

$query_args = array(
    'post_status' => 'publish'
    'post_type' => 'post',
    'posts_per_page' => get_option( 'posts_per_page' ), // 10 by default
    'offset' => get_option( 'posts_per_page' ), // 10 by default
    'cat' => 8 // the category ID
);