Does anyone know why this happens?
Because Google designed it to use tag soup instead of HTML
How to make this compliant?
The documentation has alternative markup that is valid under the draft HTML 5 specification:
<div class="g-plusone" data-size="standard" data-count="true"></div>
If you want it to work with HTML 4.x or XHTML 1.x then you might be out of luck (although you might be able to add the non-compliant markup using JS, but that would just be a hack to conceal it from validation and not at all in the spirit of valid markup)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…