@Luke281 It may well be a system error, there are many such glitches on the platform. Or the host could just be saying that, you really have no way of knowing.
Hosts don't just cancel willy-nilly, unless they are new and don't understand the repercussions of cancelling a confirmed guest. The penalties for host cancellations are extensive- the dates they cancelled will be blocked on their calendars, so they can't accept another booking for those dates (they may be able to reverse this if Airbnb does confirm to the host that it was a glitch on their end), they are fined $100, "Host cancelled this reservation XX days before check-in" appears on their review page, which makes guests wary of booking with them, and if they have Superhost status, they will lose that for only 1 cancellation.
It's a good idea for guests to read all the reviews, pay attention as to whether or not it is a "new" listing with a possibly inexperienced host, and if so, communicate with the host before booking through IB to ascertain that they answer quickly and seem keen to take your reservation and that there are no pricing issues. Also as Superhosts will lose that status for cancelling, you have a better chance of not getting cancelled if you book with Superhosts. But a non-Superhost with a history of great reviews and no cancellations should be fine as well, and would be experienced enough to know that if the pricing was wrong, whether that was the host's fault or a system error, it's a better idea to take the loss than to cancel.
To answer your question simply, both hosts and guests are allowed to cancel for whatever reason. The host runs the risk of the penalties mentioned, the guest runs the risk of losing some of their money if they cancelled after the free cancellation period. Airbnb can't force a guest or a host not to cancel, all they can do is institute policies which discourage that.
If I were a guest, I'd be inclined to look for another listing to book if I thought the host was being unfair, rather than insist on staying with a host there was already an issue with.