Ist glaub´ ich ganz einfach:

23:59:59 sind 8 Stellen, während 0:0:0 nur 5 Zeichen sind. Die letzten 3 werden folglich nicht überschrieben, wenn die Uhr auf 0 Uhr umspringt, und deshalb hängt noch der Rest ":59" hinten dran.

(Das gleiche Problem nur mit weniger Zeichen müsste auftreten, wenn die Sekunden oder Minuten von 59 auf 0 umspringen - dann müssten hinten auch noch ein bis zwei überflüssige Zeichen rauslugen - stimmt´s?)

Die einfachste Lösung wäre die, dass Du hinter die Sekunden noch 3 Leerzeichen hängst:

Code:
LCD Stunde; ":"; Minute; ":"; Sekunde; "   "
Oder Du machst jedesmal ein "CLS", wenn eine der Variablen auf 0 gesetzt wird und der "Text" dadurch kürzer wird.