Since my initial post on this subject I have had the good fortune to be able to get some feedback from Salesforce on this issue. And I thought that it would be good to share this.
It turns out that the issue I have been seeing is due to a bug in the VisualForce engine which looks through the Map to see which columns need to be rendered. This code is passing null as a key to the Map which in return throws the error that we see as end users. I am assured that this bug will be fixed before Spring ’12 is released; so whilst it may be a pain at the moment we can get some solace in knowing it’s a transient issue.
As an aside I also found out something else during my conversation with Salesforce around this which is useful. Apparently Spring ’12 contains a fix which allows null to be a valid key in a Map. I wasn’t aware that it previously wasn’t allowed but I am informed that this is the case. It might therefore be worth checking through your code to see if you rely on this behaviour. I have heard that this fix may become “versioned” as people may depend on the old behaviour but I can’t say for sure that this will be the case. Short story: check your code.