Se você sabe que nunca há duplicatas no array, você pode usar
JSON_SEARCH para encontrar o caminho para o valor que você deseja excluir e, em seguida, use JSON_REMOVE para removê-lo. Observe que você precisa verificar se JSON_SEARCH realmente encontra um valor, caso contrário JSON_REMOVE anulará todo o campo:UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Fiz uma pequena demonstração no dbfiddle .
Observe que você deve usar
JSON_UNQUOTE na resposta de JSON_SEARCH para torná-lo um caminho válido para JSON_REMOVE .