CTPs don't go through the full release process that betas and final releases go through. We just take a build off the main branch that passes our basic automated tests and ship it. There's no real stabilization process or sustaining engineering after it
ships, so we don't need to create a branch.
I like your way of describing it: "Snap a label on the main branch when it starts to look good enough for a CTP." That pretty much captures it.