subprocess can only launch other processes. It can't tell those other processes what to do with that (beyond allowing you to pass data via STDIN).
dxdiag is generating those dialog internally, outside of subprocess' realm of control.
The only way to reliably stop it is to figure out what dialog is popping up and find a flag specific to dxdiag to disable that dialog (if one exists).