The auto-width features (row header width auto-fit and cell auto width) rely on the actual rendering to get some measurements. That happens in cases when it is not possible to calculate all dimensions in advance. If you don't display the grid it will have nothing to measure.
I recommend using a dummy row when there is no data to display to overcome this problem. This would save you a lot of headache.
You might be able to eliminate some (but maybe not all) issues by additional tweaks, e.g. you can reset the rowHeaderWidth before switching the date:
function changeDate(date) {
dp.rowHeaderWidth = 0;
dp.startDate = date.firstDayOfMonth();
// ..
}
There is no problem with not displaying the grid if you don't use the auto-fit features.