The comments made me realize the problem only occurs on my machines, which all have high contrast mode enabled. Following this lead I found an MSDN article hinting at the culprit:
https://learn.microsoft.com/en-us/windows/win32/w8cookbook/high-contrast-mode
Theming is not enabled in both the non-client and client areas of apps in high-contrast themes. It is also not enabled in apps that do not contain a Windows 8 <supportedOS> tag in their app manifest and that draw in the non-client area of a window using the DwnIsCompositionEnabled() API. The entire app renders in the high-contrast mode of the classic theme.
Once I include a manifest declaring support for Windows 8, the modern dialog appears.