mysql separate email and cellphone from user table to avoid extra unused-space usage
Use InnoDB, not MyISAM.

Use CHAR only for columns that are truly fixed length (country_code, uuid, postal_code, md5, etc).  email is not likely to be such.

I recommend against using a numeric field for a phone number.  What if the user has an extension?  Or needs a leading 0?  Or enters dashes, etc?

How many users are you expecting?  A million translates to well under 1GB.  Even a billion users, with tens of GB needed is probably not important compared to what else is going on in your multi-GB server.

Use NULL when the business logic needs.  For phone and email in your app, it means "not supplied".  That's fine.

If you dissect the table structure, you will find that more than half of the bytes are "overhead" are "free".  Your attempted optimization is relatively insignificant.

There are other reasons for splitting columns out from the table, but I don't think you have found a valid one.