This is normal.
A deployed smart contract runtime bytecode does not include constructor code (see the constructor caveat).
In Solidity, code that is inside a constructor or part of a global
variable declaration is not part of a deployed contract’s runtime
bytecode. This code is executed only once, when the contract instance
is deployed. As a consequence of this, the code within a logic
contract’s constructor will never be executed in the context of the
proxy’s state. To rephrase, proxies are completely oblivious to the
existence of constructors. It’s simply as if they weren’t there for
Therefore, you cannot pass any parameters to a constructor, as there is no constructor when you use clone.
What you need to do is use an initializer like in the link that I mentioned above and call that initializer just after cloning. Basically, your constructor becomes the initializer function.
Switch to openzeppelin-contracts-upgradeable for your clonable implementations. And make use of the initializer modifier to protect your "constructor".