MATLAB Compiler (and other deployment products, such as the Builder products) do not compile your code in the same way that a C or C++ compiler does.
MATLAB Compiler encrypts and archives your code, and packages it within a thin executable wrapper. You supply this to your end user along with MATLAB Compiler Runtime (which is freely redistributable and, if you want, can also be packaged within the executable as well).
When the end user runs the application, the executable simply dearchives and decrypts the MATLAB code, and executes it against the MCR rather than MATLAB itself.
At no point is your code visible to the end user in a decrypted form (however, non-code files that are included within the application will be, if the user pokes around in temporary directories).
"Reverse-engineering" the code would involve breaking the encryption on the code files - I believe the encryption used is AES256, a strong standard. I'm no expert, but my understanding is that this would be a harder process than the decompilation of a C/C++ application.
I'd also agree with many commenters' suggestion that the best idea is to simply put a licensing restriction in place and rely on that. If it eases your mind, there are plenty of commercial applications successfully being deployed and distributed using MATLAB Compiler.
Edit: R2015a replaced the Builder products with a new product, MATLAB Compiler SDK. The above answer remains the same for this product.