What exactly are you doing to the DataSet? It sounds to me like either:
A) The grid is still holding on to it's old layout. In which case, you should be able to get around this by calling grid.Layout.Reset.
B) Something is wrong with the data source and it doesn't actually have any columns in the child band. But since you didn't say what you are doing, it's hard to tell if this is the case.
Oh, that's a nice solution. You don't even really need to change the relationship in that case. You could set up your DataSet with two relationship and then just use the Hidden property on the band in the grid to hide one band or the other.
The BindingManager probably doesn't have notifications for the kind of thing you are doing. Try setting the grid's DataSource to null and then back again.