Not very frequent at all.
The need to delay traffic toward an airport is quite common. Usually, it is simply a question of fitting someone in a sequence of arriving aircraft, but there can be more severe cases, such as a runway change or ongoing emergency. In any case, ATC has a number of tools to use, and unpublished holdings are usually one of the last tools to be selected.
What we usually prefer to do is make use of radar vectoring instead. This is much more flexible, easier to work with and requires less time on the frequency. A normal holding pattern takes 4 minutes to fly. If needing to delay a flight for just a few minutes, using a holding will only really work if it works to delay the flight 4, 8, 12 etc. minutes. If I need to delay someone 6 minutes to fit in an arrival gap, then I could put them in a holding for 4 minutes and then vector them around for 2 minutes, but if I am going to be giving delaying vectors anyway, skipping the holding is easier.
On a busy radio frequency, available time on the frequency is everything for a controller. Nonessential or long messages can really ruin your day when working a tight approach sequence into a busy airport. Let's look at the phraseology for instructing an aircraft to enter a non published holding that the crew were not expecting:
SAS123 proceed direct to ANDIE, alpha november delta india echo, and hold. Inbound track 120, right turns 1 minute legs.
Depending on your rate of speech, such an instruction may take almost 10 seconds to issue (and you can't just speak faster, because then the pilots will ask you to repeat yourself because they missed something).
If ATC needs to delay flight for a long time (say, more than 10 minutes), then holdings can definitely be an option, but in that case published holdings are used as much as possible. Published holdings are designed to ensure terrain clearance down to a specified lower limit, and, importantly from an ATC perspective, have defined lateral separation minima to other traffic. We are not allowed to use radar separation to aircraft established in a holding, so separating traffic from someone holding in a non published holding would be quite a hassle - but for published holdings, holding areas are defined, to which we can use radar separation. Finally, the phraseology for entering a published holding is much shorter:
SAS123 hold over ANDIE as published.
If ATC needs to delay a flight for a short time (say, less than 10 minutes), using radar vectors is usually much easier, both for the controller and the crew. It is much more flexible (I can vector people around, and start creating a sequence 50 miles from the airport, even though there is no room near the airport yet) and can be used to delay flights any number of minutes (not just multiples of 4). And the flight crew just needs to adjust their heading, no need to calculate holding tracks, compensating for current wind and so on.
Of course there are cases, for example emergencies, where pilots may request to hold somewhere that does not have a published hold, and ATC will of course permit them to do so. But looking at the workload establishing a non published holding gives us, using a published holding or some other tool (radar vectors) is usually the preferred option.