Your question is a bit broader than I think you need it to be, but I'll answer both the broader and narrower questions.
As a contractor, whether you work on a personal machine or not depends entirely on what you agree with the company. If their dev tools are all on the cloud, I wouldn't expect them to issue you a laptop. If they use a secure VPN, or explicitly want to manage your workstation, then that's up to them to decide but then the responsibility of providing you with a machine falls on their shoulders.
If either you or the company have a fixed preference that you will not (or would rather not) deviate from, then that needs to be discussed in advance.
I did not receive a corporate laptop for over a month. Apparently it had to be setup in an office and with everyone working from home it was difficult.
From this, I surmise that there was an explicit agreement for you to work on one of their laptops, but due to issues (presumably the coronavirus lockdown?), plans were changed.
This is where we get to the part where you choose to be reasonable or a stickler for the rules (and either is fine, but both come with consequences).
You can be understanding and agree to work on your own laptop for the time being. Note that the company needs to agree to this too, if they previously stipulated that you should work on their machines.
You can stick to the agreement (assuming it was explicitly agreed that you should use their machines), but then you run the risk of either the work being indefinitely suspended or having your contract cancelled altogether. Whether the company can suspend or back out of the contract depends on the contract.
As a contractor, I generally assume I'll be working on my own machine unless instructed otherwise, so I would always be open to using my personal machine even if that was not the original plan. But your mileage may vary.
but they had me install add-ons to the web browser and Microsoft Office
If they provided you with the Office license, and the add-ons aren't breaching your privacy, then I don't quite see the issue with what's being asked.
Working on a personal machine will always entail (to some degree) needing to install the tools/framework that you'll be working with. That can reach beyond development tools, it also includes any tools you may use administratively or for communication.
As a contractor, should it be agreed on (either in a meeting or expressly in the contract) who provides tools?
If it matters to you, discuss your preference beforehand. If you want to make absolutely sure this doesn't become a point of contention later on, then include it in the contract.
Note that any costs related to using a personal machine (wear and tear, using licensed software on your machine (e.g. an IDE license), ...)should generally already factor into your hourly rate. It's up to you to decide whether to factor in those costs, and whether you adjust your rate if you don't work on a personal machine. In the end, you ask for a given hourly rate that you feel comfortable with. How you calculate that rate is at your discretion.
But as the corona lockdown is an exceptional situation, I wouldn't be particularly opposed to using a personal machine as an exceptional situation either, even if I wasn't expecting to do so on a regular basis. But again, that's my opinion and you may feel differently.
I thought contractors are supposed to provide their own tools, but it would be ridiculous buying a new computer for one client for a short term contract.
While there is nothing wrong with doing so, I'm slightly surprised by the notion that you're a contractor developer who doesn't own any personal computer on which you can perform some modicum of development, even if it's not fully specced for it.
If the client requires you to own products (of any kind, whether it's a laptop, peripheral, software license, ...) that you do not own and are not willing to buy, then don't sign a contract with them.
Alternatively, have them agree to supply you with the necessary materials, or refund the cost of purchase (whether or not they then expect you to send them the purchased material when your contract ends depends on whether they want you to or not, it's their property).
Should it be made clear that work doesn't start until all tools are in the contractors possession and all accounts are set up and accessible from where the contractor is working, or is this unreasonable as there's usually some on boarding process?
My friend suggested that a contract should state the work starts once the contractor has access to all the required systems and tools.
This very much depends on the contract.
For example, if the contract stipulates that you will work from a given start date to a given end date, then any delays due to the company (failing to provision you the tools you need) are not your problem.
Unless, of course, the contract stipulated the possibility of delays, or there is local legislature inherently mandating the ability to suspend/cancel a contract in such a case. I would expect that if the company fails to provide you with the materials, that any such ruling would err in your favor, but your culture/legislature may vary.
If the contract stipulates open billing, or an amount of hours to perform with no specified dates on which to perform those hours, then there's a reasonable argument for the company to suspend your work (and thus billing) until you have the tools you need. At the same time, then there is also no expectation of you to perform any of the work beforehand.
This again all hinges on what the company asks and what you mutually agree to. You could work out a different arrangement that both parties are happy with. What I'm listing here is what either party can demand when no mutual agreement can be found.