Buffers can currently be any size, but there are many places where there are 4 byte limitations anyway:
- mapAsync size (which means mapAsync with default args fails on such buffers)
- size of mappedAtCreation buffers
- copyBufferToBuffer sizes
Additionally it can add complexity in initialization because it's required for those last 1-3 bytes to be initialized, but copyBufferToBuffer can't be used to initialize them.
So, they're of pretty minimal use. Why not just disallow unaligned sizes?