Should I include as much information as possbile to help the optimiser?
The best way to determine this is to simply look at the execution plans. Typically the optimizer will "condense" a lot of the operations in a query down. For example, if you include "WHERE 1=0" in your query it will see that, know it to be false, and do as little work as possible to return an empty set. In fact, in this case, it does 0 I/O operations as far as STATISTICS IO is concerned.

Since, by default, the optimizer is going to shuffle your JOINs around into an order that it thinks makes the most sense, I would be very surprised if it didn't also get rid of the redundant conditions in the WHERE clause.

EDIT: This is all assuming the WHERE clause is just going to be repeating what was already established in the JOIN clause. In your example you are including the columns used in the JOIN clause in the WHERE clause, so that equality has already been evaluated once.

I did a quick test on my end and the execution plans were identical, but I still encourage you to give it a try. Also, check out Benjamin Nevarez's book on the optimizer: https://www.red-gate.com/products/sql-development/sql-prompt/entrypage/sql-query-optimizer-ebook

I forgot to mention the amazing tool that is SQL Sentry Plan Explorer: http://www.sqlsentry.com/products/plan-explorer/

Great tool to look at plans, and the free version is VERY capable.