This is not definitive, since I've never tested it; however....
First, the MBR is irrelevant on your system, except insofar as a protective MBR is part of the GUID Partition Table (GPT). Your boot loaders are stored as files in the EFI System Partition (ESP), which is mounted at
/boot/efi in most Linux installations. Ubuntu stores GRUB in the ESP's
EFI/ubuntu directory (that is,
/boot/efi/EFI/ubuntu from Ubuntu), and Microsoft stores its boot loader in the
EFI/Microsoft directory tree on the ESP. This is why you get the dual boot loader treatment when you want to boot Windows -- Microsoft uses one location for both Windows 7 and Windows 8, just as Ubuntu would if you were to install multiple versions of Ubuntu, so that one boot loader must present a menu to enable you to boot either version of Windows.
In theory you might be able to create a second ESP, copy the original ESP's
EFI/Microsoft directory to it, and edit files on both ESPs to limit them to boot just one version of Windows. Unfortunately, I don't know enough about the Windows boot files to give more precise instructions. In fact, I don't even know that it would really work, but it might.
If you're willing to go to the effort, you could try this to get Windows to do most of the work for you by re-installing Windows 7:
- Create a second ESP on the disk. In GParted, you'll need to shrink a partition by a small amount, create a new FAT32 partition in that space (be sure it's FAT32, not FAT16), and give it a "boot flag." I also recommend giving it a unique name, like "WIN7ESP." (This might be useful if you end up using rEFInd or to help identify it in file browsers.)
- Remove the "boot flag" from the original ESP.
- Optionally, change the type code on the Windows 8 partition. You could set the "lvm flag" on it in GParted, for instance. The goal here is to make it less likely that the Windows 7 installer will detect Windows 8.
- Erase the original Windows 7 partition by creating a fresh NTFS filesystem on it. Give it a unique name to make it easier to identify.
- Re-install Windows 7. At this point, Windows 7 should boot directly.
- Restore GRUB as your default boot manager. If you're unsure how to do this, you can use Boot Repair. Alternatively, you could install another EFI boot manager, such as rEFInd or gummiboot.
- In Linux, launch GParted and undo the partition type code changes you made earlier -- reset the boot flag on the original ESP and, if you changed the type code on the Windows 8 partition, remove that flag to restore it to the correct type code.
- In Linux, type
sudo update-grub to get it to re-detect boot loaders, with any luck including both of the Windows boot loaders. If that fails, you may need to edit
/etc/grub.d/40_custom to add a custom menu; or you could install my rEFInd boot manager, which should detect both copies of the Windows boot loader.
I make no promises that this procedure will work. Also, even if it does work, it may create problems down the line, because Windows doesn't support more than one ESP per system. (The EFI specification says it's OK, though.) Thus, a future Windows update or re-installation could end up getting confused and misbehaving. You should be able to work around such problems by temporarily resetting the type code on one or the other ESP (that is, removing its "boot flag" in GParted).
If this procedure doesn't work, or if it sounds too involved for you, I recommend you ask about this on a Windows forum, since Windows boot loader configuration is more of a Windows issue than a Linux issue.
Two more points:
- AFAIK, Ubuntu is still giving its Linux partitions the same type code that Windows uses. This makes the Linux partition(s) show up as unformatted disks in the Windows file browser. I recommend correcting this problem with
gdisk, as described here. Neglecting to do this makes it too easy to accidentally trash your Linux installation from Windows.
- Windows 8 uses a new "fast startup" feature that's incompatible with dual-booting (even with Windows 7). It's IMPERATIVE that you disable this feature, as described here. Failure to disable this feature will almost certainly result in filesystem corruption.