I haven’t tested this but the idea is to check the post status, if the post is not published, show the metabox otherwise don’t.
function non_publish_metaboxes() {
global $post;
if(!isset($post))
return;
if($post->post_status !== 'publish'){
// ... Show Metabox
}
}
add_action( 'add_meta_boxes', 'non_publish_metaboxes' );