How to prevent cuts between adjacent array copies in freestyle?
Generally, array segments will have edge loops between them even if you use the merge option. The merge essentially merges the vertices at the bridge between segments, but does not dissolve the edge loops generated by the segmentation.

To avoid seeing the edge loops with freestyle, you can limit the edges that are rendered by freestyle by marking those you want manually, then setting the freestyle to only render marked edges in:


To mark an edge, go to edit-mode, then select the edge, press CtrlE --> Mark Freestyle Edge.

To set freestyle to only render marked edges, go to the render layer settings in the options panel, then to the Freestyle Line Set settings, then uncheck everything except Edge Mark. 

Alternative method

In this case (and similar cases), where you essentially have an object that simply needs to scale on a specific axis based on the dimensions of another object, you can use a driver instead of an array modifier.



To do this I added a driver to the beam's y scale property (In properties N panel, right click on y scale and then press "Manually create later (single)".

I then added a driver variable (single property type) that points to the wood beams array overall y dimenions (dimensions.y data path), and set the expression to be that variable's value divided by the original y dimensions of the metal beam object (2 in the example above).

This sets the scale so that the metal beam's y dimension fit the wood beam array's overall y dimension, and you have one seamless, "edgeloopless" metal beam that even looks smooth with freestyle renders.