The HTML5 standard says that the XML-ish self-closed tag syntax `<TAGNAME/>` (note the trailing slash) is ignored: tags are "self-closed" iff the tag name matches a list of "void tags". As such `<b/>` and `<span/>` and `<br/>` are treated exactly the same as `<b>`, `<span>`, and `<br>`.
Without tidy turned on, the Sanitizer mostly enforced this constraint, rewriting `<b/>` as `<b/>`. That isn't strictly according to the HTML5 spec (which would rewrite it as `<b>`) but does get the point across that this is invalid HTML syntax.
However, when tidy is enabled, tidy replaces `<b/>` with nothing, that is, it removes the invalid tag from the output. This has led to its (ab)use as a way to protect leading/trailing whitespace and punctuation in templates. However, there are alternative ways to do this, including `<nowiki/>` and ` `, which don't violate the HTML5 parsing rules.
Invalid self-closed tags will first be deprecated using a tracking category. Once pages which use this construct are cleaned up, we'll change both the "tidy" and the "no tidy" case to be consistent with the HTML5 parsing standard; that is, `<b/>` will be transformed into `<b>`.