Currently there is only a possibility to delete existing properties by wxPropertyGridInterface::DeleteProperty(wxPGPropArg) method.
I think there should be a method to remove the properties from wxPropertyGrid without destroying it. It could be something like this:
void RemoveProperty(wxPGProperty* p) or
wxPGProperty* RemoveProperty(const wxString& propertyName)
This method might be useful to workaround the bug #2186521 (instead of hidding the child properties they could be removed temporarily from wxPropertyGrid).