char s3[5] = {'H','a','l','l','o'}; ist doch bis auf die Schreibweise genau das gleiche, wie

char s2[5] = "Hallo";

und beides ist nicht empfehlenswert. Alle stringverarbeitenden Funktionen erwarten eine Nullterminierung. Falls du so eine Funktion benutzt, kann das in unerwartetem/unvorhersehbarem Verhaten enden, was auf einem µC besonders schlimm ist, da er entweder einen Reset macht oder du ihn evtl. zerschießen könntest.

EDIT: Erster Post im neuen Forum