HtmlDocument stores the value of all id attributes in a Hashtable (_nodesid). The values of the id attributes are converted to lower case and then used as keys in the HashTable. The Hashtable appears to only be used by the GetElementbyId() method.
This behavior is contrary the the HTML spec. For more insight see:
I believe the fix for this is quite trivial (stop doing ToLower() on the id's), however it will be a breaking change to those that currently rely on this behavior.