That is odd, I would expect it to delete BranchMemberItem first. Perhaps include the SQL trace.
Do you have any other relationships/foreign keys or cycles?
TopLink Essentials did have some issue with delete of OneToMany's that used a join table, but you seem to be using a foreign key so should be ok.
You may be able to remove your objects in two stages using flush(), or remove the database constraint.
Most of the deletion constraint issues in TopLink Essentials were fixed in EclipseLink, so you may consider upgrading.