This is a known bug and as Smied pointed out, we avoid this issue by not allowing columns widths to exceed the width of the window. Using the onscroll event to move the DIV containing the column headers is definitely the right fix.
In fact, ZmCalColView.
js uses onscroll to keep the horizontal scrolling in week views in sync (see ZmCalColView.prototype._syncScroll if you're
really curious).