The separator has a natural width of 1 pixel. You told it to reserve the space across five columns, but you haven't requested that the separator actually fill those five columns. To solve this, supply the sticky
attribute, which says "if there's more space than needed for this widget, make the edges of the widget "stick" to specific sides of its container".
In this case, you want the separator to sticky to the left and right edges of it's container. The sticky attributes uses the points of the compass for values, so you want "e" for east, and "w" for west:
ttk.Separator(...).grid(..., sticky="ew")