Hi,
I think its not a good idea to render invalid markup using javascript by making up your own expando prooperties for html elements. Sounds like IE is doing the right thing and enforcing this while other browsers are forgiving and allowing you to do the wrong thing. If you need to store extra properties store them on your javascript objects not on made up arbitrary attributes on the html elements. Seems like you could associate your json objects to an element by an id or naming convention but keep the custom properties on the json object not on the html element.
javascript can write almost anything into the markup using document.write, but just because you can write invlaid stuff doesn't mean you should. With dom scripting I think the browser "should" enforce the rules of the dom and it sounds like IE is correctly enforcing it.
Best,
Joe