You can see a discussion of the actual size used here:
What is the size of a boolean variable in Java?
But basically it comes down to a trade off between memory efficiency and performance - especially when you consider that every other variable in the class needs to start word-aligned anyway.
You can only gain by packing them smaller when you have multiple smaller objects to pack, and then you still need to potentially leave padding to align the next member.