The problem is that nv.models.multiChart uses linear scale for its x axis, and then when it draws the columns, it calls nv.models.multiBar , which uses ordinal scale with .rangeBands() .
You can track this mess through the source code:
First, consider multiChart.js
HERE is where the x-scale sets the linear scale.
HERE it calls the nv.models.multiBar model to create bars.
If we jump to look at multiBar.js
HERE it creates an ordinal scale, and HERE sets the scale range using .rangeBands()
As a result, the ordinal scale used to place the bars and the linear scale used for the axis of the chart are not aligned. Here, which two scales look on their own if they are plotted along the axis:

The solution would be to make the chart display line graphs and the x axis in terms of the ordinal scale used by the bars. This will work in your case, because the bars and lines use the same data for the x axis. It is very simple to do if you create your own schedule and do not rely on nvd3, as I showed in my answer to your previous question HERE . This is extremely difficult to do if you are trying to work in nvd3, and many others have tried and failed to disable the default scales used by nvd3 diagrams. See this issue on the nvd3 github page , which has been open since January 2013, for example.
I tried using several approaches to reuse the ordinal scale of the bars, but with little success. If you want to orient yourself and try to reinstall it yourself, I can tell you that from my experiments I came closer when I used chart.bars1.xScale().copy() to make a copy of the bar scale and set its range of domains and ranges . Unfortunately, since the width of the chart is calculated during rendering, and I cannot create a hook in the chart.update function, it is not possible to set the rangeBands correctly.
In short, if you cannot live with label offsets, you will probably need to copy your own chart without nvd3 or find another type of layout for your visualization.