I want to call this a straight-up bug in Frotz, since the spec doesn’t say that clearing the screen should reset the colors. But I guess it also doesn’t say that clearing the screen shouldn’t reset the colors…
Anyway, whether it’s a bug or not, I can work around it easily enough. Dialog’s Z-machine backend now runs another @set_color or @set_true_color after clearing the screen, and this produces the expected behavior on both Gargoyle and Frotz.
(Probably also Lectrote? I should test Lectrote.)