From my experience working with various governments, the issue comes from control provisions. The logic always goes something like this:

Problem: a fraud occurs, e.g. someone was bribed to favour one contractor

Solution : strict must-be-respected rules are put in place to ensure that the process is competitive and transparent.

Problem 2: now the process is very cumbersome and complex to set up for the administration as each field (e.g. document management consultant vs external study vs external auditor vs IT hardware vs contractor for the canteen vs medical services vs ...) has very different requirements but each has to respect the same general process. For some it works well for others it doesn't.

Most importantly, the procedures are usually slow as you need to give everyone time to do their part and be transparent and predictable. And everyone is busy - e.g. you might get five 200 page offers (much of which is boilerplate to respond to boilerplate pieces of the tender itself) and several staff need to read those, capture their observations, agree on a rating for each tender, ...

You also need to be transparent, so you need to communicate very openly - e.g. some governments have an obligation to allow all bidders to be present when the bids are opened, so it is obvious that all are treated fairly. Also all the documents you write must later be publicly accessible/can be seen by all bidders, so you need various internal reviewers to ensure you don't get sued. Even if a bid is obviously bad you still have to go through the motions for that bid as every government has at some point been sued by a bidder for discrimination/non-respect of some rule and then had to seriously pay out..

All this is complex and there are many rules, so many smaller bidders are from the beginning excluded. Moreover, the effort to make such tenders is high, so the bidders calculate that into their offer price (and they have to cross-subsidise other offers where they put in the work but lost the bid).

Not to forget also that you usually need to define precisely what you need and often those precisions are written by non-experts or copy pasted from previous similar tenders (such as I bet happened in this case...) .

Solution 2: all have an interest to find ways to get faster contracting with more flexibility. For instance a common solution is something like a 'framework contract' (different names in different places) - essentially a contract with one or more parties that they will swiftly give you a certain kind of service/good (an external auditor, some laptops, air conditioning repair, office moving services, ...). So you tender for someone to provide you potentially in the future repeatedly at time X one or more products of type Y. The contract will run for 3 or 5 years or so (to be worth the effort) and provides more or less a monopoly to that one party, in return for flexibility in getting what you ask for without new tendering.

Problem 3: the tendering for such a framework contract is in the abstract, i.e. you (as government employee) might be asking for services/goods that you (or anyone in your building or even in other government bodies!) may want 3 or 5 years in the future and you have no clue what those will be. So you define as far as you can, but you'll always get it wrong. Maybe when you tender a celeron was good enough and the price is great, but when you actually take action to make use of the contract the technology is outdated and the (locked-in) price far too high. Or you tender thinking of the minimum viable need, but the power users are left in the cold. Or as the tendering rules are so complex you are sitting in a specialised procurement department that knows nothing of actual business practice and so you have been told to tender this thing but just have no clue on the substance (procurement department is the least attractive place to be in, so don't expect the creme-de-la-creme of employees to do that work) and so get the trainee to write the tech specifications as young people know these things...

Solution 3: ?? change the rules and go back to problem 1 ??