It seems to only happen if both entities have a CallbackProperty. A workaround for now would be to store the entities in arrays yourself, and iterate through and remove when you want to remove a group. Let me know if that works for you. Feel free to chime in on the GitHub issue as well!
I seem to have a similar issue the original poster has. My Cesium knowledge is limited but so far I have managed to get two custom datasources with entities that each have callbackproperties and it works as long I dont delete/clear/reset the datasources. If I reset the datasources, I get the destroy() error - exactly like the example given above.
With regards to your proposed solution. Do we keep both datasources and just pass the arrays with entities to the Custom datasource or do we remove the datasources and just add the array of entities directly to the viewer, if so, how?
If possible, could you update the sandcastle sample to include the solution?
In my proposed solution, you would no longer be using data sources at all. You’d just have simple JavaScript arrays instead and add the entities directly to the viewer. I’ve updated the Sandcastle with an example of this here.