There is a way to get the desired effect without modifying TriSurf function, using above example:
% Pretend X, Y, and Z defined above
Tri = delaunay(X,Y);
% Pretend function TriDip exists that takes X,Y,Z and Tri(angulation) info &
% returns a column vector (same length as Tri) with angle of dip for each triangle
% patch defined by each row of Tri (i.e., vertex indices of single triangle patch)
C_Tri = TriDip(X,Y,Z,Tri);
hh = trisurf(Tri,X,Y,Z);
% Additional bit to control color of each patch individually
set(gca,'CLim',[min(C_Tri), max(C_Tri)]);
set(hh,'FaceColor','flat',...
'FaceVertexCData',C_Tri,...
'CDataMapping','scaled');
I borrowed the above bits from the Matlab help page for patch (which I wasn't aware of when I posted this question). A lot more helpful coloring options for patch type objects are available on that page, too.
{RANT} Even though this work-around example is available to get the desired effect, I still do not get why the default usage of this function should expect that the C vector should be the same length/size as X, Y, or Z. Why would someone (the majority of the time) want to color the patch surface according to a value associated with one of its three vertices? [Still not clear what one of three vertices is used to identify how patch gets colored.] Seems (to me) to be a much harder way of controlling the property each face gets colored with. {/RANT}
Hopefully someone that knows more than I can clarify.