It was the 3rd party suppliers (i.e. BIOS by companies like Phoenix, Award, AMI along with motherboard manufacturers etc.) selling picks and shovels to the would-be prospectors (i.e. clone assemblers) that allowed for the 'open' PC standard. For example, there was a company call PCs Limited that licensed AMI BIOS so that they make some IBM clones... they did kind of OK and soon renamed themselves Dell...
Some of the other companies I mentioned were the ones that followed Compaq's lead and did their own clean room versions which they then sold to everyone else who came flooding into the market.
As an aside, this was actually a problem for the first few years: take multiple independent clean room implementations, bake in some silly things that the manufacturers did with them (gotta customize, right?), and combine it with the bad programming practices of the day (i.e. programs written in assembly doing jumps into undocumented portions of the BIOS because, hey, it worked on the IBM and saved a few bytes/cycles or did something useful...) It was similar to how well web standards worked not too many years ago with multiple browser implementations doing/interpreting things slightly differently and developers doing things they shouldn't because they could... and that was with a public spec designed to be copied. Eventually things get worked out, but both had a rough start.
Unlike its competitors, Spectrum had standard phone jack connectors for sound and magnetic tape recorder (so you could use any recorder). It also had a direct circuit board connection to the system bus on the back, and the schematics were available. My father built us the 8255 interface to have joystick and other peripherals connected.
And you surely could not overwrite it.
There weren't many useful things in the ROM, if you were writing your application. Maybe the font table and tape loader. On the other hand, if you were able to ignore the ROM, you got few bytes more of RAM, because you were able to repurpose the "system variables" area.
The biggest "problem" with ROM that you were unable to replace it with RAM (until next reset, for example), thus taking precious 16kB out of 64kB address range.