Chebfun does support discontinuous ODEs. Here is a toy example:
t0 = 0;
N = chebop(@(t,u) diff(u,2) + 10*(t>t0)*diff(u) - .5*(t<=t0)*u, [-1 t0 1]);
N.lbc = 0; N.rbc = 0;
u = N\-1;
plot(u)
If the operator is linear, then Chebfun returns eigenvalues and eigenvectors using eigs().
>> [V, D] = eigs(N, 1);
>> plot(V)
I hope this helps
Nick
PS. The above seems to work, but I plucked it out of the air and make no claims that it is a well-posed problem.