Hallo Peter,
Schade, das man Mma manchmal so einfache Sachen vorher erklären muss.
Gut, aber man kann dies tun
In[1]:= ClearAll[g]
        Unprotect[Sum]
Sum /: Sum[\[Alpha]_ + \[Beta]_, l_List] :=
 Sum[\[Alpha], l] + Sum[\[Beta], l]
Sum /: Sum[\[Alpha]_ \[Beta]_, l_List] := \[Alpha] Sum[\[Beta], l] /;
  FreeQ[\[Alpha], First[l]]
        Protect[Sum]
g[a_, b_, x_, y_] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(Expand[
\*SuperscriptBox[\((
\*SubscriptBox[\(y\), \(i\)] - \((a\
\*SubscriptBox[\(x\), \(i\)] + b)\))\), \(2\)]]\)\)
In[11]:= la = D[g[a, b, x, y], a]
In[12]:= lb = D[g[a, b, x, y], b]
In[13]:= Solve[{la == 0, lb == 0}, {a, b}]
X und Distribute[] sind nicht mehr erforderlich.
Gruss
Udo.
P.S.: Die Variante mit X ist allenfalls zu bevorzugen, weil  
selbstprogrammiertes pattern matching gegen die Rechenregeln verstossen  
kann und allfällige Fehler in derart modifizierten Standardfunktionen auch  
an anderer Stelle Fehler erzeugen können, mit anderen Worten, die  
Modifikation ist nicht mehr lokal (wie bei der Verwendung von X), sondern  
global in der gesamten Mma-Sitzung.
wenn es elegant nicht mehr geht dann eben auf die harte Tour:
Es geht ohne explizite Ersetzungsregeln. Ein Operator X übernimmt das  
Ausklammern und Solve[] löst das lineare Gleichungssystem:
In[80]:= ClearAll[g, X]
X /: X[\[Alpha]_ \[Beta]_, l_List] := \[Alpha] X[\[Beta], l] /;
  FreeQ[\[Alpha], First[l]]
g[a_, b_, x_, y_] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(Expand[
\*SuperscriptBox[\((
\*SubscriptBox[\(y\), \(i\)] - \((a\
\*SubscriptBox[\(x\), \(i\)] + b)\))\), \(2\)]]\)\)
In[81]:= la = Distribute[D[g[a, b, x, y], a]]
In[82]:= lb = Distribute[D[g[a, b, x, y], b]]
In[83]:= Solve[{(la /. Sum -> X) == 0, (lb /. Sum -> X) == 0}, {a, b}]  
/.
 X -> Sum