No, code is not the same as a specification. There are a lot of accidental implementation details that the customer may not require. By making the code the specification, you end up with those details becoming requirements, and you can then no longer change that implementation.
Having functional behavior and implementation details separate can be really useful, even though it is typically a pain to keep them in sync.