Well, I don't see why an element couldn't just be written like <img src="..." data-foo>.
The presence of "data-foo" attribute means true, its absence means false. It's all about how you use these attributes—you define their semantics themselves depending on your needs.
You don't gain much by forcing yourself to use "true" vs. "false" as values. This is how you would check for truth in both cases with JavaScript:
element.getAttribute('data-foo') != null
// with values:
element.getAttribute('data-foo') == "true"
And in CSS:
img[data-foo]
/* with values: */
img[data-foo="true"]
The only use-case for having attribute values is when you need to differentiate between 3 states: true, false, or nil (absence of the attribute). This is rare, and you can achieve it without the patch by casting boolean to string:
%img{ :data => { :foo => obj.predicate?.to_s } }
So you see, we already have the ability to have "true" and "false" as values—your patch is only removing the ability to have attributes without values.