so which statement is constructing the new node, xsl:choose or xsl:when?
Neither. It's xsl:variable. The spec here isn't intuitive, but it was done that way because of the need to retain compatibility with XSLT 1.0.
very true - coincidentally I spent a half hour or so struggling with this very issue with a colleague yesterday.  We finally abandoned the effort and did things in a different way that seemed to avoid the need to pass around a sequence.  I'm glad to have the mystery cleared up here, but let me also add that when I sent the same question around as a kind of challenge in my office, which includes a fair number of people with good working knowledge of XSLT - not experts, perhaps - nobody knew or could guess the answer.  Somebody did finally read the spec and the prize was claimed, but definitely not through any intuitive leap.

-Mike Sokolov