GPG will compress the file prior to encrypting it, which reduces the chances of a plain text attack, regardless of file type. Furthermore, should a rare case of a message being compromised occur it is not indicative of a compromised key amongst the recipients of that message.
The reason for the latter part pertains to the process by which GPG encrypts messages and files. First the content is compressed, usually using zlib. Then the compressed data is symmetrically encrypted with a one time password called a session key. Then the session key is asymmetrically encrypted with the public keys of the recipients. When the message is decrypted the process is reversed: the recipient unlocks the session key using their secret key and passphrase, GPG uses the session key to decrypt the symmetrically encrypted data and finally it is uncompressed.
An attack on a single message is more likely to result in determining the session key than compromising any of the public keys.
If you still want to conceal the file types then do this:
gpg -ear $RECIPIENT_ID -o filename.asc filename.odt
To restore the original filename when decrypting, do this:
gpg --use-embedded-filename filename.asc
GPG will write the decrypted data to the original filename, which is stored in the symmetrically encrypted data, along with other information necessary to rebuild the data.
Note: do not use the above embedded filename flag if manually decrypting ciphertext from an email program, especially if using Thunderbird and Enigmail. Many email encryption programs (including Thunderbird and Enigmail) do not assign an original filename from the draft and decrypting that way could cause problems, like trying to write data to a null filename.