They certainly do in Australia and one big reason being the cost of calls on a mobile phone both phoning out with one and also the cost to a person who makes a call to a mobile.
Another great reason for a flexible (i.e. normalized) design. You never know who is going to use your system.
As to storing addresses I guess you should not store any addresses in the persons record.
I totally agree, except in the case of transitory, ETL, or reporting data. Definitely not in a production OLTP system.
But what if the person's home suburb in combination with their business suburb "describes" the person and in fact will be used to select records.
This is a problem in every system. But it doesn't mean the address needs to be in the same table as the person. A view (query) of that data will help resolve the seeming disparity. And a person certainly doesn't lose his identity if he loses his job or home.
Most industrialized countries have a unique, government assigned number which uniquely identifies that person within that country. Using the name, country, and that number would almost certainly uniquely identify a person within an international system for centuries. By then, everyone will have a cyborg implant with its own serial number.
What about a persons name. Some people have a first and last name. Some have a middle name and some have two middle names.
Correct. In the "person" table, you would have first name, middle name, last name, prefix, suffix, etc. For the cases you cannot anticipate up front, you could have an aliases table, supported by an alias type lookup table.
Some people have the same address for mailing, home and business while others have all three different addresses. What if record selection or categorising the person is dependent on how many addresses he has.
And in addition to that, more than one person can live at the same address. Compound that with the fact that, over time, more than one family can live at that exact same address.
Create a unique address table. Create a table types lookup table. Create a party address table. The party address table has 3 foreign keys (PartyID, AddressID, and AddressTypeID), to and from dates, other stuff you may want to track about the relationship, and possibly a surrogate key. This flexible design allows multiple people to inhabit the same dwelling over time and allows an individual to have multiple addresses at the same time and over time.
Not sure what you mean by categorizing, but the above design certainly can be queried for almost any combination of having addresses or not having addresses at any time in history. However, depending on the requirements of the system, you may want to handle categorizing people a different way. (I guess it's "categorise" in the rest of the world.)