Esta consulta está excluindo todas as categorias da sua postagem porque você está informando com a cláusula where. Você está essencialmente dizendo, remova todos os registros da tabela posts_categories que tenham um post id =$post_id. Você precisa adicionar à sua cláusula where para torná-la mais específica.
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
Isso agora diz a mesma coisa que você fez, mas adiciona um qualificador extra. Exclua apenas as linhas da tabela em que o post_id é $post_id e o ID da categoria é (valor da sua caixa de seleção desmarcada).
Isenção de responsabilidade:estou tentando adivinhar onde você está armazenando seus IDs de categoria em sua função($query_cat_id[$x]).