Hi Nitin,
great observation!
My very biased (ha) view on this is the following:
In fancy talk, the spectral normalization limits the l_2 norm of the operators represented by each layer of the discriminator (i.e.with Euclidean (aka l_2) distance for both the inputs and the targets we have |f(x)-f(y)|_l2 <= C |x-y|_l2, and C could e.g. be one for linear layers). In that sense it is very similar to the original WGAN,which bounded the coefficients and thus limited the l_1-l_infinity norm of each layer (i.e. where you measure the input distance in l_1 and and the output distance in l_infinity). In this sense, one great achievement of the SNGAN authors is that they found an efficient way to match input and output norms in order to have more tight control over the activation norms (the mismatch really means you don’t have good control). In contrast to that, WGAN-GP and SLOGAN 2 attempt to enforce a Lipschitz constraint between input and output directly (without resorting to the individual layers). That has the advantage of matching the theoretical interpretation of Wasserstein distance more closely, but the enforcement is much much weaker as it is only on a small sample rather than on the operators directly.
I can also offer a very simple, self-contained SNGAN notebook 4 and in the same folder there are toy implementations of WGAN-GP and SLOGAN penalties.
So basically, I see the leading options as

implement a layerwise constraint as in WGAN and SNGAN,
for variety, one could try limiting the “rowwise” absolute sums, i.e. the
l_\infty, l_\infty - norm of the operators, I’m sure someone tried that and published a paper and invented a new name, but I didn’t look. When you do, be careful about PyTorch transposing weights etc.
implement a “full model” constraint as in WGAN-GP and SLOGAN. People do all sorts of things here, e.g. DRAGAN only limits the norm in a neighbourhood of the data etc.

Best regards
Thomas