This is not a microcontroller thing. Processors do this, various other products do this. On one side of it why waste the money on a high priced oscillator when you dont have to. Another side as mentioned is this gives you flexibility. What mcus have come to develop is an internal RC oscillator, add to that the PLL and you gain even more flexibility at a reduced cost if the accuracy is within your tolerance.
When you think of an X86 or an ARM based chip or whatever in part your cost savings but also you can keep the fast stuff mostly on die and have the outside stuff slower, so these chips are packed with PLLs, certainly the reference clock to 4Ghz or whatever your chip's main clock runs at but for the dram, pcie, network, etc you have plls that generate the various clocks for those various peripherals as not all of them run at the same speed. At times you have separate reference clocks for the various items (network, pcie, etc). So multiple oscillators/crystals depending.
How it magically makes a higher clock. Its a phase locked loop which you can google. It is basically an unstable analog circuit that oscillates, take some TTL logic, an odd number of inverters and tie them in a loop, if it happens to oscillate when they are powered, it will just keep oscillating. There is a non-zero amount of time for the signal coming in one side to invert and go out the other side, multiply that time by using more components, lowering the oscillating frequency at any one point (well one inverter and a bunch of non inverters). Buy boxes of components, and wire up multiple setups due to variations in the process, the connections, the power, etc no two sets will be identical, if they are momentarily one will drift relative to the other. Now harness this, intentionally create an unstable circuit like this (maybe not made of inverters but something that will oscillate) have a loose control as in vary the voltage it runs at and make it go faster and slower, then count oscillations. If I have a 100Mhz reference clock and want to make 400Mhz then I need to create a control system around the crappy oscillator to keep it counting 4 times for every 1 time the reference clock ticks. then use the output of the unstable oscillator as my 400Mhz clock. A lot of times you want to have the VCO (voltage controlled oscillator) or DCO, output be a higher frequency then divide that down to get your system/peripheral clock. For example easier to say multiply by 100 and then if you get a count of 99 speed up and a count of 101 slow down. Rather than say 2, if you get a count of 1 speed up a count of 3 slow down and the jitter being significantly larger. In the end there is no magic.
There was a time and were some products that you had to put an oscillator on. Today it doesnt make much sense, a lot of use cases are fine with the internal oscillator and its limited accuracy combined with the pll to provide various choices within one product and not requiring external non-free components. If a higher accuracy is required then there are quite often crystal and oscillator choices for the same product, not requiring the vendor to generate multiple chips that are otherwise the same just to deal with possible clocking choices.