Managed to fix the SkyCoord issue with Heliographic frames.
1. Added default values in kwargs section of constructor for Heliographic frames. Apparently the SkyCoord constructor creates a new (same kind) frame with the default values. Since I've created a constructor for the Heliographic frames, hlon and hlat were not getting any default values. SkyCoord wrapping working fine now.
2. Modified the API tests a bit - the pytest raises error is now made to work with a frame other than Heliographic, because other frames don't have constructors feeding them default values.
3. Need to create a new representation for Helioprojective frames, because Cartesian will not allow x, y, z to have different physical types/units.