To set the base uri of where your metadata presides. For example, you have all your metadata hosted on a server with the endpoint as https://www.myserver.com/metadata/<token id> then your base uri is https://www.myserver.com/metadata/.
This helps to reduce the work of having to manually set the URI for each individual NFT.
Yeah you could but imagine if you had 10k NFTs, you had to call _setTokenURI 10k times or maybe if you could batch it, you might still need to do it like 500 times whereas with the base URI, you don't need to do this as long as you configure the way you retrieve your URI correct.