I'm looking for a way to do a bulk deletion of multiple instances of a custom object. Is there an approved method to delete custom object instances programmatically, instead of through the UI?
The only supported way to delete custom object instances is through the UI.
One suggestion is to create a boolean field to use as active/inactive field. You can set up a default filter that would exclude those object instances you consider inactive. That way users that want to see the old inactive ones would have to change the filter.