I experimented with seeded generations and noticed that results still end up (slightly) different
Did I mess something up or is this an unavoidable effect of relying on the Physics engine for placement?
You understood this correctly, it's a limitation of using physics here. Godot 3's physics engine is nondeterministic, so multiple runs will lead to different results on the physics side. Your seed controls the generated random numbers in your code.