Define a simple nCk expression
e = nchoosek(2,k)
e =

Evaluate at some values. Evaluation for k<0 and k>2 returns 0 per nchoosek:Algorithms (I wonder why that's the case, numeric nchoosek does not work like that) subs(e,k,-1:5)
ans = 
Now simplify
es = simplify(e,5)
es =

Error if trying to evaluate for 0 <= k <= 2, even though the original expression is perfectly sensible for this range of k (and would be the primary usage, I'd imagine)
end
ans = 'Division by zero.'
But evaluating for k where e should be 0 does work.
subs(es,k,[-1,3:5])
ans = 
Different expression
e = nchoosek(d+1,k)/factorial(d)/(d+1)
e =

Expand it and we get something in terms of the gamma function
Evaluate the original expression at d = 2 for a range of k
subs(subs(e,d,2),k,-1:5)
ans =

Evaluating the expanded expression returns a different result
subs(subs(es,d,2),k,-1:5)
ans =

Simplify the expanded expression
es = simplify(es)
es =

The simplified expression makes perfect sense for 0 <= k <= d + 1, but for other values throws an error
subs(subs(es,d,2),k,[-1,4:5])
end
ans = 'Nonnegative integer or symbolic variable expected.'
Of course, the simplified expression evaluates correctly for d = 2 and k = 0:3
subs(subs(es,d,2),k,0:3)
ans =

I've always thought that simplify() and expand() should just be alternative forms of the original expression. But in these cases the numerical evaluation changes. Is this expected behavior?