Richard,
If you'd like to know what the default nesting hierarchy is, you can refer to "engraver-init.ly", which shows this heirarchy of the different contexts that support nesting (recursion removed for simplicity):
Score accepts...
|- GrandStaff
|
|- StaffGroup accepts...
| |- GrandStaff
| |- PianoStaff
| |- ChoirStaff
| |- StaffGroup
|
|- ChoirStaff accepts...
|- GrandStaff
|- PianoStaff
|- StaffGroup
I believe that this is what is causing the stencil to not show up like you were experiencing since the GrandStaff context, by default, doesn't accept a ChoirStaff one. However, if you'd really like to do that (I think this probably isn't your real goal), you can simply tell LilyPond to accept it and the proper nested braces/brackets appear as you would expect:
\version "2.18.0"
\score {
<<
\new GrandStaff <<
\new Staff { s1*4/4 }
\new ChoirStaff <<
\new Staff { s1*4/4 }
\new Staff { s1*4/4 }
\new Staff { s1*4/4 }
>>
>>
>>
\layout {
\context {
\GrandStaff
\accepts "ChoirStaff"
}
}
}
It looks a little funny to me, but that's how you would implement this behavior.
Regards,