Bitcoin smart contracts are based on the language Script:
https://en.bitcoin.it/wiki/Script
Opcodes and values can be combined to yield a vast array of possible contracts, just like any programming language.
Templates are not used, except to activate the full language capabilities (i.e., P2SH).
Ethereum is effectively a generalized distributed computer -- so new types of contracts can be written, tested, and iterated on readily, without requiring a change to Ethereum itself.
Bitcoin is not a generalized distributed computer, but it does allow new types of contracts to be written, tested, and iterated on readily, without requiring a change to Bitcoin itself.
I really don't think that's true. I'd wager that the majority of the public that is aware of Bitcoin has no idea what Ethereum is.
Nevertheless, Ethereum - through the Ethereum Foundation and is sizable war chest, has a far more concerted marketing effort.