just a little update on tests I have been doing.
So I tested this on a Nvidia GPU and it had the same problem. With some help, I found it was because I was missing a VAO, even though I am using attribute less rendering and I thought VAOs only matter for the GL_VERTEX_ARRAY target.
After adding that, the code worked without problems on the Nvidia card (it even solved some padding with the structures that shouldn't exist since I'm using std430), but the problem persists on the AMD card. I used glGetIntegeri_v with GL_SHADER_STORAGE_BUFFER_BINDING and confirmed that the bindings are correct.
I know Nvidia drivers tend to be more permissive and AMD strictly follow the standards, so any suggestion on something I might still be missing to make it work?