On the Rigol set the pulse frequency to something appropriately high to allow you to set a low lead edge/rise time, then enable a 1 cycle burst and use the burst period to set the frequency you desire.
I wonder if this is what Siglent are doing internally to implement their feature. Regardless, what you describe isn't exactly user friendly -- seems like a bit of a garden path to have to go down just to get an occasional pulse.
With the Rigol basically what most of the inbuilt functions (triangle, pulse, harmonic, etc) are doing is allowing you to create a 16K (16384) sample waveform by setting the various parameters relevant to the type of waveform, and set the sampling rate. The output just becomes the 16K samples repeated over and over at the desired sample rate. When you enable burst all it is doing is creating dead time between outputting each 16K waveform. Obviously you now lose a fair bit control over where the falling edge is placed since it has to be contained within the same 16K samples as the rising edge. e.g. If you set the 'Pulse frequency' to 10MHz to achieve a fast rise time and then use the Burst function to set the period t=1ms to achieve 1kHz, the falling edge can't be more than 1/10MHz = 100ns after the rising edge.
Strangely, on the lower frequencies the rigol does not allow you to set the rise/fall time low enough to achieve a rise/fall over 1 sample which is why you get the 'stair steps'. You could get around this by creating a custom arb waveform if you really needed to. On the Square function the Rigol does always transition in 1 sample and the DAC always runs at maximum bandwidth so you achieve the fastest rise/fall time at every frequency.
What the Siglent seems to have on the pulse function is the ability to 'pause' at the high and low parts of the waveform so it can always run the edges at maximum sample rate, possibly dedicating as many samples to the edges as possible. I'd be interested to know how it handles edges >8.4ns. E.g. can it handle 12ns correctly, or does it only do 8.4ns increments or possibly even larger increments? That will tell a lot more about how it is achieving that functionality.