Interesting question and the answer is: it depends.
You would have to provide more information about the exact inputs that are needed for the model and you would have to be 100% certain that each input means the same thing for each company. So, for example, you would have to be sure about things like timelines - if you are looking at "sales" and one company measures sales monthly, but the other quarterly then that's a problem for your model.
Also, you would have to consider the scale of the inputs. If one company has sales in the millions of dollars while a smaller competitor has sales in the thousands of dollars, that's also a problem for your inputs.
If you can think about issues above and still decide that it's OK to continue, then yes, you can use the same model. This is called transfer learning and you can take a trained model and then "update" it with the data from the new company.
But if you do run into issues with things like the above (or some other variation on issues with inputs) then I would recommend that you use your third option and just develop a model for each. If you have a framework that works for one company (i.e. you have a model and you have a sense for the data you need) you should find that you are able to create similar accuracy numbers, even with brand new data.
Personally, I think there is a 4th option. You could just handle all of this from the data side. I would develop a new model for each company, but I would develop Company Y's model based on Company Y data but then also augment my training with Company Z data. You can choose the mix you want, but by including records like this you are still leveraging the power of writing a single model for a company with the added industry/competitor knowledge.