I'm not exactly sure how I resolved this, but it's working now. The only thing I can think of that I've changed is the fact that I was missing a tableupdate in a portion of my code that was changing data in the cursor. Once I put that in, my deletes now work.
Go figure -- I don't know why a delete would fail if a tableupdate wasn't previously issued, but I'm not going to question it. It works and I'm moving on. Thanks to all who responded with suggestions that helped me stumble across the answer.