I can agree with this for the most part, but I'd like to make some comments on it too.

There is always a tradeoff if you want to pack data like that for how easy code is to read. There is a lot to be said for code that you can understand at a glance. Particularly in an open source community where other people may have to look over your code at some point.
In MySQL BIT is synonymous with a TINYINT which is 1 byte. A decision should be made whether adding the bit operations to your code is worth the legibility trade off of just using a few bitfields. Factors that may help you decide are perhaps how much space you have available and if the data is in a table that will hold a lot of data. If you are going to have a few flags on a table that does not contain, and will not contain, a lot of data, you might be better off keeping your code simple and just using a few bit fields. Disk space is pretty cheap now too -- not that it should be wasted but the concern for conserving it isn't what it used to be. On the other hand, if you have 30 flags and an lot of rows, you might well be better off packing the bits like suggested.
MySQL unfortunately doesn't really treat a BIT field as nicely as it could. Your suggestions do definitely apply here to MySQL more than they might to some other databases. Many database will pack the bits for you and using a BIT field is wise. The database will allocate as many bytes as it needs to hold the bit fields in your table. All of the complexity is removed for you because you still access the BIT fields as their individual column names while the database worries about how those bits map to the actual data. I'm just mentioning this so people don't get the idea that BIT fields are always bad to use in a database, they just aren't as efficient in MySQL as they can be elsewhere.
I'm not disagreeing with your post, just offering up another point of view. I'm a big fan of making code as easy to understand as possible. I work in an environment where I have to read other people's code and they have to read mine and the less complicated the better in most cases.
I do agree that if you have an outrageous amount of flag data in a table that is heavily populated that the trade off of legibility vs. efficiency may be the best route.