The attached test program shows two stages each called from a separate runLater that is scheduled in the start method. The first is set to be alwaysOnTop. The second is not, so should remain behind the first. On Linux this intermittently fails, such that the first stage is not correctly set to be always on top. Not only does the second stage come up on top of the first when it fails, but other windows (e.g., the terminal window) can be brought in front of the always-on-top stage, too.
This works reliably on Mac and Windows.