The foundation of your system is your database. If you change your database schema then you also have to change your code. That means that keeping a stable data model helps to reduce the amount of rework you need to do in your code.
Having said that, in the real world requirements change. It's a good idea to invest some time up front to get your data model as good as it can be. After that, the real world will intrude and you'll have to modify your database schema.
With careful planning, you can save yourself a lot of time reworking your code when easily anticipated changes happen.
In terms of Null values, there is nothing wrong with them in and of themselves. However, if you find yourself with a table that has a lot of Null values, it could be a sign that your design is not properly normalized. In a transactional processing system like an e-commerce site, you should start with a database design in third normal form (3NF) and only denormalize with great care and deliberation, and only when necessary. This will help to keep your data quality from degrading.
EAV should be avoided as a general rule, although there are situations where it is a sane choice. I've argued here that online product catalogs is one of those situations.