It might be worth posting this as an issue/suggestion on the neo4j GitHub repository - Issues · neo4j/neo4j · GitHub
At least so it's written down, although I'm not saying that it will be worked on as a high priority as I think the general way that WITH works is that you can only reference any variables that were in scope before that point.
I think the pattern of WITH p.name AS fullname, substr(fullname, 0, 5) AS nickname can get extremely messy and hard to follow. With the current implementation of two WITHs, the rule that the variable has to appear in the previous WITH makes it much easier to track variable names and bugs.