Why are all roles assigned to a user when using wp_insert_user()?

You need to update the user straight after they have been created. So yes, by default they get all then you update.

wp_update_user( array ('ID' => $user_id, 'role' => 'user_role_here') );

The above should fix this issue.

Obviously changing the $user_id to your style of ID and also user_role_here to editor or alike.

Thanks,
Tom