Dear Gennaro,
I don't know why the results are so strange. More the more, I found other strangeness, e.g.:
In[1]:= Solve[x[t] DiracDelta[t] == x[0] DiracDelta[t], t]
During evaluation of In[1]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.
Out[1]= {{t -> 0}, {t -> 42/5}}
In[2]:= Solve[x[t - 5] DiracDelta[t - 5] == x[0] DiracDelta[t - 5], t]
During evaluation of In[2]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.
Out[2]= {{t -> 5}, {t -> 67/5}}
In[3]:= Reduce[x[t] DiracDelta[t] == x[0] DiracDelta[t], t]
During evaluation of In[3]:= Reduce::fexp: Warning: Reduce used FunctionExpand to transform the system. Since FunctionExpand transformation rules are only generically correct, the solution set might have been altered.
Out[3]= True
In[4]:= Reduce[x[t - 5] DiracDelta[t - 5] == x[0] DiracDelta[t - 5], t]
During evaluation of In[4]:= Reduce::fexp: Warning: Reduce used FunctionExpand to transform the system. Since FunctionExpand transformation rules are only generically correct, the solution set might have been altered.
Out[4]= True
In[5]:= NSolve[x[t] DiracDelta[t] == x[0] DiracDelta[t], t]
During evaluation of In[5]:= NSolve::ifun: Inverse functions are being used by NSolve, so some solutions may not be found; use Reduce for complete solution information.
Out[5]= {{t -> 0.}, {t -> 0.365626}}
In[6]:= NSolve[x[t - 5] DiracDelta[t - 5] == x[0] DiracDelta[t - 5], t]
During evaluation of In[6]:= NSolve::ifun: Inverse functions are being used by NSolve, so some solutions may not be found; use Reduce for complete solution information.
Out[6]= {{t -> 5.}, {t -> 5.36563}}