I've seen two approaches to handling the presentation of shared storage to Windows Server 2008 R2 cluster VMs on VMWare vSphere. One is the traditional method of carving out a LUN on your SAN and presenting it to both hosts through the Microsoft ISCSI software initiator. The other method is to make a vmdk on an existing LUN and attach it to both hosts and made it an independent disk so that it isn't affected by snapshots.
Is one way the "correct" way, or are both viable? Is there any advantage or disadvantage to doing either?
The "traditional method" is supported when the cluster is across physical machines. The other method is supported when the cluster is on a single VMware host.
Both are viable, but as you say there are advantages and disadvantages.
One way to illustrate the difference is to think about vMotion-ing one of the machines in the cluster from one ESXi server to another. In the MS iSCSI initiator case, vMotion will not do anything with the disk. It's just treated as another process on the machine it is moving. However, in the VMDK case, vMotion knows it is a disk and can manage the disk migration along with the machine migration. VMDK has features that make vMotion work better that are not present in the MS iSCSI initiator case.
In the VMDK case, each ESXi server needs to have access to the VMDK if you want to vMotion between them.
I guess if we are talking traditional, the VMDK case is traditionally suited to VMware HA and no MS clustering. The MS iSCSI initiator case is traditionally suited to MS clustering and no VMware HA.