While the attribute is optional, it's important the server knows what the client is trying to convey.
Radio buttons and check boxes are included in the submitted request if checked. With checkboxes, as long as their name is unique, there isn't a problem with them having no value as long as the server side code is written to deal with it. 99% of the time that isn't the case - the server side code will check to see if the value is logically true. The default value of any input element is empty string in PHP, which is logically false. So, we have a problem.
Radio buttons without values are worse. In order to get the radio behavior all the radio buttons of a set should share a name. Unless they have different values there's no way to ascertain which one was checked from the server side.
Just because code is valid doesn't mean it will be functional, or even clear to the maintenance programmer that comes after you.