What could be the reasons behind only 31 engines of the planned 33 engines igniting during Starship's recent static fire, given that the spacecraft is designed to have 33 engines and how could this impact the overall design of the spacecraft?
One engine was shut off because it had a leaky fitting. The other shut itself down (auto aborted) when it was fired.
The static fire probably wasn't delayed because 31 was thought to be good enough and they are on a tight schedule. They are very keen to get this launch done and delay is not what they want (more specifically it's not what Elon Musk wants).
31 engines was probably enough to give them and the FAA sufficient confidence. No doubt there will be more tests to come anyway. Starship should be able to complete its mission with a few engines out, especially if it's not carrying much payload.
Aborting the whole test would have required all the propellants to be recycled (with losses so might have required top ups), investigations and remedial work of undefined duration to be carried out, installation of one or perhaps two new engines (do they have appropriate spares immediately to hand at Starbase?) new road closures to be arranged and more nitrogen purges (might need more LN). The actual list of knock on things that cause issues in the background is probably a lot longer than that. For example I bet there is a long long list of changes and improvements to the GSE that would potentially be impacted.
Note that this test gave them data on firing all engine position "types" (gimbaled center cluster and inner ring, fixed outer ring), the effects on the booster and ground equipment of attempting to start up 33 (later changed to 32) engines, and operating conditions with all but 2 engines operating, with 94% of the originally planned thrust and 32 (planned) engine ignitions. All they really missed out on was a test fire of the engine that shut down in startup and the one that they didn't fire, and the first of those would most likely have happened anyway even if they did abort the test to fix the other engine.
Proceeding with the test cost them only the propellant they already had loaded, and they got almost everything they possibly could get out of the test, so in cost/benefit terms the choice is clear.
In general, the materials cost of getting a large system like that ready for test is much less than the people-and-infrastructure cost of setting up the test event.
At that point, they had already put in the people-and-infrastructure cost. The real question was likely not whether they could have the test that they wanted (because the answer was to that was no), but whether it was worth paying the relatively small marginal cost in order to get a large subset of the data they wanted back.
I don't know what SpaceX's specific costs look like here. But from working on other large-scale projects, late delays in test events mean you have already committed most of your cost for that event. Picking a path forward is a balancing act between the high costs of pausing or restarting the test and the value of the data that you might miss from things left out in last-minute changes.
Seeing how a system responds with an error (1 engine not fired, 1 aborted) actually provides useful information as well. For example, it shows that the software and hardware in place to shut down an individual engine works properly - otherwise an engine problem could easily spread to other engines and possibly cause loss of the spacecraft.
In addition, working through engine failure is designed into these types of rockets. For example, at least one time Falcon 9 launched successfully despite failure of an engine. In that instance, the first stage was not successfully recovered, but the primary mission succeeded.
On the other hand, if you only have one engine then failure of that engine is failure of the mission.