Hi Ram,
I had actually run into this fairly recently. Basically, this behavior is more due to the InstallShield Custom Actions using Microsoft's XML Parser, and so there's not really a way to work around it, other than to use some other mechanism for doing the XML file changes, or by doing post-install fixup of the XML file.
In trying to get around this, I got down to the point of modifying the XSLT transform streamed inside the XML helper *.dll in the custom action, and nothing would change this behavior. It's unfortunate, but it seems like there's some parsers that don't like MSXML's way of terminating empty elements, even though it's still valid XML, and there's no way to convince MSXML to parse it differently.
If anyone else who is more clever than I has found a solution, perhaps you could post it in this thread?