BGE : AddObject adding two object
Do not enable the [Tap] option. It makes no sense.

Background

The Always sensor "always evaluates positive".

Any sensor will trigger all connected controllers when the evaluation result changes (from not positive to positive and from positive to not positive).

As the always sensor never evaluate not positive, it will only trigger when the object was just created. So it is more a "is created" trigger.

There are configuration options that modify the behavior of the sensor. You set the Tap option. This option changes the behavior of the sensor to evaluate not positive the next frame after evaluating positive, regardless of the real situation. This was introduced to make the use of the keyboard sensor a bit more comfortable.

As you enabled that option, you get this processing from the always sensor


frame 1: evaluate positive -> (result changed): trigger the controller 
frame 2: evaluate negative (because of Tap) -> (result changed): trigger the controller
frame 3+: evaluate negative -> no trigger


Solutions

Assumption: single trigger

With the default settings (no Tap, no Triggering Levels, no Inv ...) the always sensor (and the delay sensor) will trigger the controller exactly once.

With that Assumption (one trigger) you can run your Python code as is.

Common use case

When you have different settings or other sensors (like a keyboard sensor) you need to implement the supposed behavior of a controller. 

You ALWAYS check the status of ALL connected sensors and consider that in your custom code.

if all(sensor.positive for sensor in bge.logic.getCurrentController().sensors):
    ...
else:
    ...


Remark: even the basic controllers (AND, OR ...) do that. That is the minimum code you should write (unless the above assumption applies).