You can see why studying the Trace: 
The culprit is that what you achieve with your substitution is to evaluate Subscript[a, 0][x] := -Sin[x].
Note that this is an expression of the form f[x] := foo[x], as opposite to f[x_] := foo[x]. In other words, you did not define a function, hence why Derivative does not work.
It's the same as doing
f[x] := Sin[x] Derivative[2][f][x]
which will not work.
You can use your trick, provided you also convert x into x_:
Solve[ -(Sin[x]/(\[Alpha]*Gamma[\[Alpha]])) - f[x]/(\[Alpha]*Gamma[\[Alpha]]) == 0, f[x] ][[1, 1]] // {#[[1]] /. x -> x_, #[[2]]} & // Apply@SetDelayed
and then you can use Derivative as you wanted (I used f[x] instead of Subscript[a, 0][x] here, for better readability.
Of course, you don't really need to do these kinds of hacks in the first place. The kind of solution provided by eldo is a better for most circumstances.