Добрый день.
Я этим вопросом тоже когда-то задавался и меня так же смущал вариант удаления всех связок и записи новых, хоть он и является довольно простым и понятным. Меня больше всего смущало "расходование" автоинкрементного поля в этом вопросе, хоть и нет, скорее всего, каких-то технически-верных обоснований для беспокойства об этом.
Я поступил следующим образом.
При сохранении брал из таблицы связей имеющиеся данные о категориях (при первом создании их нет, конечно же, при редактировании уже есть).
Если категория для новости уже была - не делаем ничего.
Если категория была и ее не стало - удаляем запись из таблицы связок (newscat в вашем случае)
Если категории не было - добавляем запись в таблицу связок.
Операции редкие, так что нагрузки лишней эти delete не дают, да и они к тому же единичные получаются. Автоинкремент по чем зря не расходуется (если он есть). Лично я выбрал именно такой вариант.