ddply passes data.frames (from splitting the input data.frame) to the function. You probably want this:
ddply(MyData, "Case", function(df) coefficients(lm(Y~X1+X2+X3, data=df)))
(Not tested since you don't provide a reproducible example.)
You passed the whole input data.frame to lm for each group..