Addresses do not randomly appear in other user accounts. If it displays, it means that it was added to that user.
Such situation where an address is assigned to a user which didn't entered it usually happen because you messed up at some point with the data in the database.
For example, suppose that I have 100 users in the hikashop_user table and 100 addresses in the hikashop_address and that each address is associated to one of the users.
Now I want to clear my list of users and empty the table hikashop_user but I forget to also empty the hikashop_address table.
So when a new user registers, he will be assigned a new user_id which will start again from 1, and thus, he will be assigned the address of the previous user with the user_id 1 since I didn't empty the hikashop_address table at that time.
Unfortunately there is nothing we can do in the code of HikaShop to avoid that.
All I can recommend is to be really careful about that during maintenance/debug/data transfers in order to avoid such problems.
In your case, I would recommend to set the AUTO_INCREMENT value of the hikashop_user table to a greater value than all the address_user_id values in the hikashop_address table (you can do that with a mysql query in phpmyadmin). That way, your new users will have ids that were not previously used by users which were deleted and thus they won't get the addresses of old users assigned to them by error.