You can use the dd method with the Ubuntu ISO file, but before this step, you will edit the /boot/grub/grub.cfg file and add a helper file (ntloader) to load the Windows boot.wim file from another partition. this is required because after doing the dd the partition table will be the GUID Partition Table, so we can't load the Windows installation from another partition without this helper file. after editing the Ubuntu ISO file rebuild the ISO file. Don't test the dd method for the Windows ISO file this doesn't work.
To avoid the Ubuntu ISO file editing and rebuilding:
Format the 16 GB USB drive by the disk utility to GUID Partition Table. Booting with this partition table and a bios-based device will be successful after installing the grub boot loader to the USB drive. I tested that by myself befor making this answer.

Create two partitions. the first NTFS partition will include the grub boot files (after installing the grub boot loader on the disk), the grub.cfg file, the ntloader file, and the Windows installation files. The second one is to dd the Ubuntu ISO file on it.
Use the disk utility to write the Ubuntu ISO file on the second partition.

Copy all files from the Windows ISO file to the first partition.
Download the ntloader and extract the /ntloader directory from the compressed file to the first partition.

Install the grub boot loader after mounting the first partition in /mnt directory. this is an example: sudo grub-install --force --boot-drectory=/mnt/boot /dev/sdc
Copy the /boot/grub/grub.cfg file from the Ubuntu ISO file to /boot/grub/grub.cfg in the first partition.
Edit the /boot/grub/grub.cfg file to add a menu entry to load the Windows installation by the ntloader file, and edit the Ubuntu installation entries to set the the second partition as the root. this is our grub.cfg file:
set timeout=10
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Try or Install Ubuntu" {
set gfxpayload=keep
set root=(hd0,2)
linux /casper/vmlinuz ---
initrd /casper/initrd
}
menuentry "Ubuntu (safe graphics)" {
set gfxpayload=keep
set root=(hd0,2)
linux /casper/vmlinuz nomodeset ---
initrd /casper/initrd
}
menuentry "Windows Installation -ntloader" {
probe -s dev_uuid -u (hd0,1);
if [ "${grub_platform}" = "efi" ];
then
chainloader /ntloader/ntloader initrd=/ntloader/initrd.lz1 uuid=${dev_uuid} file=/sources/boot.wim;
else
linux16 /ntloader/ntloader uuid=${dev_uuid} file=/sources/boot.wim;
initrd16 /ntloader/initrd.lz1;
fi;
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
else
menuentry 'Test memory' {
linux16 /boot/memtest86+.bin
}
fi
- Reboot to test.
This method will help add or remove files, boot entries, and replace the Windows installation files without reformating the drive. Also, we can replace the Ubuntu ISO on the second partition without reformating.
You can do the dd for the Ubuntu ISO file on the first partition. In this case, extract the content of the Windows ISO file and the ntloader file to the second partition, and install the grub boot loader to the USB drive, while selecting the boot directory of the second partition. Don't test the dd method for the Windows ISO file this doesn't work.
It is preferred to format the USB drive as a single NTFS partition, install the grub bootloader, extract the content of the two ISO files, and edit the /boot/grub/grub.cfg file. this method doesn't require a helper file. Also, this helps to add and remove files, and boot entries without reformating the drive.
Update:
The MBR Partition Table was tested and worked, and we don't need to use the ntloader. replace the Windows installation menu entry with this:
menuentry "Boot Windows -ntldr" {
insmod ntldr
set root=(hd0,1)
ntldr /bootmgr
}
Create USB drive contains multi Ubuntu versions, HBCD-PE-64 and multi Windows installation
Boot with Windows ISO file from Grub