/summon minecraft:chicken ~1 ~ ~1 {NoAI:1b,EggLayTime:1}
Considering the mob should have no AI, eggs really should not appear.
Code Analysis
Code analysis done by @unknown
Doing a check for the isNoAi() bool in the aiStep() method fixes this issue
Current Code
net/minecraft/world/entity/animal/Chicken.java
public void aiStep() {
super.aiStep();
this.oFlap = this.flap;
this.oFlapSpeed = this.flapSpeed;
this.flapSpeed += (this.onGround ? -1.0F : 4.0F) * 0.3F;
this.flapSpeed = Mth.clamp(this.flapSpeed, 0.0F, 1.0F);
if (!this.onGround && this.flapping < 1.0F) {
this.flapping = 1.0F;
}
this.flapping *= 0.9F;
Vec3 vec3 = this.getDeltaMovement();
if (!this.onGround && vec3.y < 0.0D) {
this.setDeltaMovement(vec3.multiply(1.0D, 0.6D, 1.0D));
}
this.flap += this.flapping * 2.0F;
if (!this.level.isClientSide && this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggTime <= 0) {
this.playSound(SoundEvents.CHICKEN_EGG, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.spawnAtLocation(Items.EGG);
this.gameEvent(GameEvent.ENTITY_PLACE);
this.eggTime = this.random.nextInt(6000) + 6000;
}
}
Fixed Code
net/minecraft/world/entity/animal/Chicken.java
public void aiStep() {
super.aiStep();
this.oFlap = this.flap;
this.oFlapSpeed = this.flapSpeed;
this.flapSpeed += (this.onGround ? -1.0F : 4.0F) * 0.3F;
this.flapSpeed = Mth.clamp(this.flapSpeed, 0.0F, 1.0F);
if (!this.onGround && this.flapping < 1.0F) {
this.flapping = 1.0F;
}
this.flapping *= 0.9F;
Vec3 vec3 = this.getDeltaMovement();
if (!this.onGround && vec3.y < 0.0D) {
this.setDeltaMovement(vec3.multiply(1.0D, 0.6D, 1.0D));
}
this.flap += this.flapping * 2.0F;
//Adding a check if the isNoAi bool fixes MC-69151
if (!this.level.isClientSide && this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggTime <= 0 && !isNoAi()) {
this.playSound(SoundEvents.CHICKEN_EGG, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.spawnAtLocation(Items.EGG);
this.gameEvent(GameEvent.ENTITY_PLACE);
this.eggTime = this.random.nextInt(6000) + 6000;
}
}
Linked issues
is duplicated by 1
Attachments
Comments 12
Still happening in 1.8.3

Confirmed for 1.8.5

As @unknown has stated on several issues,
Any part of an entities behavior that is not implemented as part of the AI is not affected by the NoAI tag.

That must be one of the most meaningless statements ever made. Anyway, where can we at least suggest this to be changed? It's pretty annoying that they still lay eggs.

I didn't assume, I looked at the code. There are many aspects of entity behavior that logically should be handled by the AI that aren't, because they're remnants of old code. Hopefully that will change when entities are given an overhaul.

Hopefully that will change when entities are given an overhaul.
Will trigger a bug report: "Chickens with NoAI true no longer lay eggs"
Fixing this would just limit options; the egg laying is already controlled/disable-able with the IsChickenJockey tag.
I can confirm this behavior in 1.19.2. You can use the following command to easily reproduce this issue.
/summon minecraft:chicken ~1 ~ ~1 {NoAI:1b,EggLayTime:1}
Bug confirmed for 1.8