The service (either intentionally or by virtue of being hacked) can serve up Javascript crypto code that either uploads plaintext, or subtly backdoors the crypto so it can be decrypted. And they can do this to just a single user, so unless you audit the Javascript every single time you load the page, you'd never know.
A signed app is more secure, because a backdoor would have to be distributed to everyone, greatly increasing the chances of it being discovered.