I happen to think that the cleanest way of doing this is (in T-SQL) is:
SELECT * FROM TABLE WHERE column = ISNULL(@param, column)
Other RDBMS would prefer COALESCE instead of ISNULL.
I think it's more obvious what the intent is here, especially as you start to add other OR clauses, and it also keeps you from needing parens when combining with AND clauses.
In my (very) limited testing, there was also a negligible perf increase using ISNULL versus OR @p IS NULL. Not that I'm advocating using ISNULL because of the perf increase (which is extremely marginal at best, and is subject to very specific cases at worst) but it's nice to know it doesn't have a significant cost. Frankly, I'm not sure why it'd make a difference either way, but the execution plan shows about a 1% difference in the filter cost.