I've been wondering about the same thing for a while now, however I am not sure what you've suggested is a good practice in general. i.e. if all objects in a database is to be owned by sa, what if say we get a third party hosting company to host our database, what does it mean to have objects that are owned by sa??
I guess to rephrase my question, If databases should only be owned by sa, then why did MSSQL server allow us to specify a different owner in the first place.