addresschanges every time an upgrade is carried out, this means that all users have to be aware of the current version of the contract, which isn't feasible a lot of the time, for example, if a user was offline for 2 months, he wouldn't know how many upgrades have happened and what the latest version of the contract is, hence the scams can jump in and steal users funds.
address) regardless of the number of upgrades, but an important thing to note is that it adds a lot of trust on the company doing the upgrade honestly, it is often argued that the owner of the proxy can be a multi-signature wallet held by the company but it still means that
m of ntrusted members needs to collude to perform a dishonest upgrade which again, isn't great.
delegatecallfunction from EVM which in simple words lets a contract use some logic from another contract but using its own storage. In other words:
msg.senderof v1 is not the Proxy but the actual user who initiated the call, this is because the
msg.sender and msg.valueis passed along with the delegatecall and any state mutations done in V1 contract will actually be stored in Proxy.