So openSUSE and in particular, grub do indeed work properly when ran from an external hard drive. The issue is really the same for any computer when you decide to boot from a drive that is not the first boot drive. For instance lets say I have a sda and a sdb, sdb must based on hardware be second, but if I boot from sdb through a BIOS setting or manipulation, grub did not know that when it was installed. If you put grub on the boot drive when it is first or sda, all things work, even if openSUSE is on sdb.
So, what is the problem/fix when you install openSUSE and grub to an external hard drive?
1. What ever boot drive you select by any BIOS means is HD0. That is the problem in that if I boot from sdb, then it is HD0.
2. When you installed openSUSE, you did not boot from the external hard drive, so it was NOT labeled by grub as HD0. openSUSE has no way to even guess what hard you are intended on booting from if it is not the first hard drive?
The fix must be done in one of two ways, depending on where you are at. Are you going to do a new install to an external hard drive or are you trying to fix an existing installation on an external hard drive?
If it is a new install here are the basics I would follow.
1. Keep the number of partitions at four or below.
2. Use all Primary Partitions (no logical Ones)
3. Install a generic Master Boot Record (MBR)
4. Install Grub in the "/" root partition. Make this the Active or booting partition.
5. During the install, you must modify the booting section so that the external drive is HD0 in device.map and in the menu.lst file. Assign other hard drives in the remaining hardware order.
That is it in a nutshell. Do the above and it will work like a champ. Be for warned that you are trying to NOT install anything on your normal boot drive. Make sure that the booting section is setup just as I say above. Make a backup of any Windows partitions you can not save or restore.