Save custom value to main content of post

The answer appears to be clear if you look at the source code. The action you’re hooking to occurs inside wp_insert_post, and is called just before it returns the $post_ID variable. This means that all the manipulation and data insertion has already taken place, so modifying the $_POST array will do nothing. You must look for things to do prior to database modification for your changes to have any effect. Luckily, WordPress has many options to choose from.

In short, here’s what I would do:

//  Hook to a different action / filter
function staddPageBuilder() {
    // ...
    add_filter( 'wp_insert_post_data', 'stPageBuilderSave', 10, 2);
}

// Notice the new filter passes different arguments, so we need to adapt the function
function stPageBuilderSave($data, $postarr) 
{
    // Since we don't have the $postID variable, let's try to grab it from the array passed by the insert function
    // Note that passing the object ID to the current_user_can function is very unusual and you can do without it
    $postID = isset($postarr['ID']) ? $postarr['ID'] : 0;

    if ('page' == $POST['post_type']) {
        if (!current_user_can('edit_page', $postID)) return;
    } else {
        if (!current_user_can('edit_post', $postID)) return;
    }

    if (!isset($_POST['st-page-builder-nonce']) || !wp_verify_nonce($_POST['st-page-builder-nonce'], basename(__FILE__))) return;

    // This bit changes, because the action is different and so are the function's arguments
    $data['post_content'] = $_POST['st-page-builder-content'];
    return $data;
}

Let us know how it goes!