Hallo Beda,
willkommen im Forum!
Was ist der Grund dafür? Müsste die erste Lösung nicht auch funktionieren?
Nein, muß sie nicht. Der Grund:
<< A \\ B >>ist kurz für
<< \new Voice { \voiceOne A } \new Voice { \voiceTwo B } >>, es werden also hier zwei neue Stimmen erstellt. Dagegen erstellt dein zweites Beispiel, welches ja von der Form
<< { \voiceOne A } \new Voice { \voiceTwo B } >>ist, für B eine neue Stimme und verwendet für A die schon vorhandene, in deinem Fall die mit Namen „oben“. Das so unscheinbare „\\“ ist also hier der entscheidende Unterschied.
Und der Grund, warum das auch so sein muß: In A und B könnten ja verschiedene Rhythmen stehen wie so oft in der Polyphonie. Und LilyPond kann ja nicht automatisch wissen, welche der Stimmen es bei einem << \\ >>-Konstrukt bevorzugen soll

Edit:
Soweit ich das richtig verstanden und in Erinnerung habe, benennt Lilypond die Stimmen, die durch die spitzen Klammern erzeugt werden, standardmäßig mit "1" und "2".
Genau genommen brauchts wie gesagt noch den „\\“, damit automatische neue Stimmen erzeugt werden, nicht die spitzen Klammern allein. Aber grundsätzlich hast du recht:
\version "2.18.0"
<<
\new Staff \relative {
\key g \major
\time 4/4
<< { c'2 e } \\ { c4 b a g } >>
}
\new Lyrics \lyricsto "1"
{
er -- ste
}
\new Lyrics \lyricsto "2"
{
zwei -- te Stim -- me
}
>>