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}}
In[9]:= Solve[
1/5 t (-DiracDelta[-5 + t] + DiracDelta[t]) +
1/5 (-HeavisideTheta[-5 + t] +
HeavisideTheta[t]) == -(1/5) t DiracDelta[-5 + t] +
1/5 (-HeavisideTheta[-5 + t] + HeavisideTheta[t]), t]
During evaluation of In[9]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.
Out[9]= {{t -> 0}, {t -> 42/5}}
In[8]:= Reduce[
1/5 t (-DiracDelta[-5 + t] + DiracDelta[t]) +
1/5 (-HeavisideTheta[-5 + t] +
HeavisideTheta[t]) == -(1/5) t DiracDelta[-5 + t] +
1/5 (-HeavisideTheta[-5 + t] + HeavisideTheta[t]), t]
During evaluation of In[8]:= 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[8]= True
If you want to discuss Dirac delta functions (actually functionals) in terms of identities and the like, then it is necessary to phrase computations in terms of functions such as Integrate that work in the same world as these functionals. Things like Solve, Simplify, and the like do not deal well with nongeneric behavior such as is exhibited by a “function” that is 0 a.e. Moreover they will not be able to prevent an autoevaluation such as 0*DiracDelta[x] from becoming 0, etc. The results shown using Solve and Simplify in this thread might best be viewed as GIGO.
Indefinite integrals don’t have so much impact in the world of DiracDelta functions. In order to test definitions one should use definite integrals that properly contain the singular point(s) in the domain of integration. See below for the example in question.