I think that when you ask for
ContourPlot[{f[x, y], (4 - x) y^2 == x^3},
{x, -3, 3}, {y, -3, 3}]
it will automatically be translated to
ContourPlot[{f[x, y] == 0, (4 - x) y^2 == x^3},
{x, -3, 3}, {y, -3, 3}]
Unfortunately f[x, y] == 0 is true only at the origin, and it will not be displayed. Try a different level curve:
ContourPlot[{f[x, y] - 1, (4 - x) y^2 == x^3},
{x, -3, 3}, {y, -3, 3}]
To get the shading there may be no other way than with Show, as you found out.