All cosmetic items only, but you purchase the exact item you want directly. The items are a little more expensive than you might expect (I think on average $4-10 each) and it includes skins, different "axes" to break objects, different dances and different "gliders" that you fly into the game on.
It's quite fun, but also totally unnecessary and you only spend money on exactly what you want - no random chance.
On top of the fact that it's a free to play game in the first place, and you can also get quite a wide range of skins, axes and dances (10s of them) by playing to complete the battle pass which is only about $10 or so per season. Plus there are a few freebies even if you pay nothing, and some you can get from linking to Twitch Prime, etc.
I think this is winning partly because it is fun (the skins are quite comedic) but also just because you know what you're getting. By comparison I spent about $10 on keys for PUBG and stopped because I just got useless crap that isn't really exciting - they're just basic clothing items. Even the rarer items aren't as exciting which doesn't help but the chance of getting one is quite low.
The thing Epic/Fortnite have done to make them sell more (compared to the random chance) is that there is <10 items for sale per day for 24 hours, after 24 hours the set changes and you may not be able to buy that item again (though in practice many returns a few days or weeks later, you can't be certain). So instead of random chance gambling they're capitalising on missing out / time limited offers. Plus there's a constant influx of new items so instead of wasting time gambling for that ultra rare item - instead you can keep up with whats newer and cooler.