I managed to get the delete to work properly by using more delete cascades between my tables. Well, in fact i must admin that i do not really know why the above does not work and after my changes it works.
There IS a delete cascade between content_items.item_id and acs_objects.object_id, so the above error should, in my opinion never happen. Unfortunately i was not able to reproduce this problem with some simple test_tables.
The function content_item__delete does definitely remove all the revisions. It does not remove the content_item directly but relies on the delete cascade from acs_objects. (but this did not cause the problem, i changed that temporarily)
I do not think that my test function behaves properly as a "copy cr_items to /tmp/cr_items.txt" right before the line that produces the error creates a file that definitely has no remaining entry that could cause an error.