Some tokens include a separate transfer fee. So if the exchange rate is 1 to 1 normally and you want to trade 100 tokens, the token transfer decreases the sender balance by 100 and increases the receiver balance by, for example, 98. Such fees will basically screw up Uniswap's regular swap functions.
That's why there are separate functions to use when you're trading tokens which include a transfer fee. I'm not sure of the technical difference between the function types, but basically the other one allows a transfer fee while the other one doesn't.
I have no idea how Uniswap's frontend decides which function to use. There also isn't any way to know for sure whether a token has a transfer fee, except by analyzing its code. You can simulate a transaction and that will probably tell you if there's a fee, but you can never be 100% sure that the fee is always there - except by analyzing the code yourself.