In Mapnik rendering of LineSymbolizers, using a stroke-dasharray is incompatible with a stroke-linecap of "round". If you try to combine the two, Mapnik will ignore the stroke-dasharray and, if you're me, leave you very confused as to what's happening.

I don't think that's correct - but you need to be careful on how the gap between dashes compares to the width of the line. So if you have a width of 2px, you'll need a gap between strokes of 5px to see a 1px gap. Each little dash gets rounded, and the round ends aren't counted as being part of the length of the stroke.