From an end user standpoint, they will never want to use the address for searching for mapped data when they could just submit a username for function parameters, so is there any specific reason why it would be better to use an address?
Your premise includes a whole bunch of odd assumptions but it isn't exactly clear what you are thinking or why you are thinking it.
they will never want to use the address for searching f
It's not necessarily about what a user would want to do. Contracts are about what the system must do.
mappings are about internal organization so it "can do" it efficiently.
There are lots of reasons to use an address ("the" user or "a" user) as a unique identifier. It's natural, for example, to use it if the information is about users. For example, a user balance:
mapping(address => user) userBalances;
If the contract has a collection of properties of each user, maybe:
mapping(address => UserProfile) userProfiles; where
UserProfile is a
struct with several members.
Hope it helps.