It is being lit, just not the way you're expecting based on how the patch was created.
For example, after doing this...
[x,y,z] = sphere(40);
S = surf(x,y,z);
P = patch(x(32,:), y(32,:), z(32,:), 'k');
set(S, 'FaceLighting', 'phong', 'EdgeColor', 'none', 'FaceColor', 'inter');
set(P, 'EdgeLighting', 'phong', 'EdgeColor', 'k', 'FaceColor', 'none');
... view it from this angle ...
... now from this angle...
The patch's edge certainly does change color based on its orientation relative to the light. I'm guessing you were expecting the patch to be lit similar to the surface, which obviously is not what's happening now. Right now, the light seems to affect the entire edge uniformly. That's because the patch is using automatically calculated normals:
get( P, 'VertexNormals' )
You can see all the normals are pointing the same direction, namely down. Hence the light has the same effect on each vertex. Using the one-dimensional X, Y, and Z data that you gave to the patch, the normal calculator couldn't have possibly know that the data represented part of a sphere -- so it did the best it could. But you can tell the patch to use normals more appropriate for this situation. The normals of a spherical surface are trivial:
N = [ get(P, 'XData') get(P, 'YData') get(P, 'ZData') ];
set( P, 'VertexNormals', N )
Now the patch edge is lit as I think you were expecting.