I noticed this too just now. address information is stored with the order in the uc_order table. this seems like a really big "flaw" in the ubercart system, at the very least one would think that a customer would have an address and that that address would populate what is in the uc_order table so you know where each order was shipped to even if a customer changes addresses.
Ubercart apparently looks at all orders by a previous user and offers a "drop down" of "saved addresses" however all the address fields remain asterisked as required, until you select a previously used address and then it populates them.
I would recommend that the default behavior should be that address fields should be populated with the last used address and a "select different previously used address" field be presented.
Ideally i would like to see pluggable address storage, so, in my case, the addresses could be stored for each customer in civicrm, and when checking out they can choose which civicrm location is their billing and shipping. or something like that. Similar to the way that the uc_address module seems to allow people to store an addressbook and choose the billing and shipping.
What i mean by pluggable address storage is this:
Site admin could decide where customer addresses are stored:
* ubercarts default systemn
* uc_addresses
* drupal user locations
* drupal cck locations
* civicrm
I would guess that each would need its own module to make the connection, i am not sure if there is any ubercart architectural changes that would be necessary
