ok, I figured it out. Its not a strange Matlab solver behaviour but it comes from the fact that the closed loop (feedback) actually is a N=2/D=2. This makes no sense in the real world since the controllers D-output goes to infinity for a step input. However it results is a state space model with a direct feet-thru.
PT1b = tf(10,[3 1],'inputdelay',0.5);
C = pid(0.1,0.1,0.1);
feedback(PT1b*C,1)
ans =
A =
x1 x2
x1 -0.5 -0.5
x2 0.5 0
B =
u1
x1 0.75
x2 0
C =
x1 x2
y1 0.1667 0.5
D =
u1
y1 0.25
(values computed with all internal delays set to zero)
Internal delays (seconds): 0.5
Continuous-time state-space model.
A solution for real world is to use a Tf on the D-term of the controller
PT1b = tf(10,[3 1],'inputdelay',0.5);
C = pid(0.1,0.1,0.1 ,0.2);
step(feedback(PT1b*C,1))


