Looks like the issue is still there as of version 13.
For example, adding more points in the example in OP:
coords1 = Table[{i, 0, 0}, {i, 0, 1000, 20}];
coords2 = Join[Table[{i, 400, 0}, {i, 0, 1000, 20}],
Table[{1000, 400, i}, {i, 0, 200, 10}]];
$Version
"12.0.0 for Linux x86 (64-bit) (April 7, 2019)"
Graphics3D[{CapForm["Butt"], Red, Tube[coords1, 100],
Blue, Tube[coords2, 100]}, Boxed -> False]

A work-around (no idea why/how it works) is to add the directive Opacity[.9999]:
Graphics3D[{Opacity[.9999], CapForm["Butt"], Red, Tube[coords1, 100],
Blue, Tube[coords2, 100]}, Boxed -> False]

Note: Bumped into this issue and the mysterious work-around while answering this question.
Update: Much less mysterious workaround: set a large enough value for the Method supoption "TubePoints":
Graphics3D[{CapForm["Butt"], Red, Tube[coords1,100], Blue, Tube[coords2, 100]},
Boxed -> False,
Method -> {"TubePoints" -> 50}]

Tube[{{0, 0, 0}, {800, 0, 0}, {1000, 0, 0}}, 30]– Michael E2 Sep 25 '14 at 17:01Tube[Reverse@{{0, 300, 0}, {1000, 300, 0}, {1000, 300, 100}}, 30]. – kglr Oct 04 '14 at 01:19Tubethe issue comes back. Try for examplecoords1orcoords2in my answer. – kglr Jul 21 '19 at 19:24