For the modes that require it padding is basically required. Technically if your message is equally divisible by the block size you don't need it but typically you want to include it anyways (and most padding schemes will pad each block regardless) because otherwise you don't know if the message (or block) has padding or not.

I'm not sure about a sane default, I believe at this level of API we should either default to no padding (and require that each update() be exactly block size) or just default to requiring a padding to be specified for the modes that require it. If we do require it perhaps a ``NoPadding()`` class to turn it off.. although I'm not aware of a reason not to pad except for compatibility.