I refuse to argue based on interpretation of the HTML4 spec.
I'll state some facts though:
The XHTML2 WG considered it a bug in the spec that the id attribute was not allowed on the root element, and fixed it in XHTML 1.0. (In HTML5 class is also allowed.)
According to the CSS spec, neither the root element nor the body ARE the canvas, but instead some styles ('background' and 'overflow' but not e.g. 'border') that are specified on the root element (or in some cases the body element) APPLY to the canvas or viewport instead of to the element itself.
UAs must apply the 'overflow' property set on the root element to the viewport. When the root element is an HTML "HTML" element or an XHTML "html" element, and that element has an HTML "BODY" element or an XHTML "body" element as a child, user agents must instead apply the 'overflow' property from the first such child element to the viewport, if the value on the root element is 'visible'. The 'visible' value when used for the viewport must be interpreted as 'auto'. The element from which the value is propagated must have a used value for 'overflow' of 'visible'.
The background of the root element becomes the background of the canvas and covers the entire canvas, anchored (for 'background-position') at the same point as it would be if it was painted only for the root element itself. The root element does not paint this background again.
For HTML documents, however, we recommend that authors specify the background for the BODY element rather than the HTML element. For documents whose root element is an HTML "HTML" element or an XHTML "html" element that has computed values of 'transparent' for 'background-color' and 'none' for 'background-image', user agents must instead use the computed value of the background properties from that element's first HTML "BODY" element or XHTML "body" element child when painting backgrounds for the canvas, and must not paint a background for that child element. Such backgrounds must also be anchored at the same point as they would be if they were painted only for the root element.
The UA style sheet styles the root element with 'display:block'.