That's correct, if you want to keep using CTE, the gurantee can be achieved via something like this
WITH deleted_tasks AS MATERIALIZED (
SELECT id
FROM task_queue
WHERE queue_group_id = 5
AND status = 'pending'
LIMIT 1
FOR UPDATE SKIP LOCKED
)DELETE FROM task_queue WHERE id IN (SELECT id FROM deleted_tasks) RETURNING item_id, id;