Option 1 & 2:
Depending on the application does allow the Client the freedom of upgrading when they want. When you get to a professional application for a complex area then this is really the only option. You still get certain efficiencies of scale, a bit more admin which can be handled by scripts.
If there are a lot of stored procedures then it does rely on database developers being on the project. Currently I have 2 inexperience developers mucking around and it does cause more grief. Also, this option is great if you have the arrogant attitude of saying to your clients this is when you will be upgraded whether you like it or not!