On Linux GTK [...]
You really mean GTK rather than GTK2 or GTK3? I don't have GTK at hand, therefore I tested GTK2/GTK3(and QT5/QT6). I have the impression that when drawing a segment of the PolyLine the stroke pattern begins always at "zero", in other words, it does not remember which part of the pattern has not been drawn for the previous segment and would be needed now for the current segment. Therefore, when the lengths of the patterns are too narrow, patterns could become undistinguishable.
The B-Spline series is a calculated series, and in principle could be calculated for every pixel. The property Step determines the distance of neighboring data points to be calculated. The length of the segments therefore, is Step pixels. And this length should be equal to the stroke period of the pen pattern. The default value is 4, and it is my impression that this is not enough the contain the period of the dash pattern. Increase the Step of the dashed BSplineSeries to 8 or 10, and the pattern should become nicer (maybe an even higher value is needed for dash-dot etc). But don't select a too-high Step value because the series then will not be displayed as a smooth curve any more.
The widgetsets seem to use different algorithms for drawing stroked lines. I have the impression that GTK2/GTK3 begin with the space part of the pattern because when Step is too small (1 or 2) no dashed/dotted curve is drawn at all. QT5/QT6, on the other hand, seem to begin with the stroke part, and here I always see a solid line when Step is too small.
In conclusion: When using stroked lines adjust the Step parameter of the series to the stroke-pattern. Basically this should apply to other calculated series (FuncSeries, CubicSpline)