estimatefee 1 will return the approx. fee per kilobyte.
sendtoaddress could use multiple of your unspent coins, the size of your transaction is not know until it is created (until the coin selection ran).
Example: Fresh wallet. You did receive 10 times 1 BTC. Now you create a transaction with
sendtoaddress <ard> 9.5. This will produce a transaction with 10 inputs (your received 10 x 1BTC). Therefor the transaction size is bigger than if you would have received 1 x 10BTC.
At the moment there is no easy way of getting the transaction fee before sending the tx (on RPC level). You could use Bitcoin-Qt (there you will see the fee before sending within the confirmation dialog).
There is a pull request for bitcoin-core that would allow fee calculation before sending the tx: https://github.com/bitcoin/bitcoin/pull/6088