Proper use of NULL, and utilizing CHECK constraints for business logic vs stored procedures
Querying a column that can contain nulls is more complex than querying a column that cannot.  So also is querying multiple tables more complex than querying one table.  I wouldn't let the avoidance of null drive the normalization.  

For example, you mentioned that all devices will eventually be disposed and get a disposal date.  If there are no other columns in the Disposal table, then in my mind it makes more sense to put DisposalDate in the Device table.  Other tables like Sanitize might make more sense as separate tables because there are multiple data points that will not apply to some Devices.

Check constraints are great and should be used when possible, but there will always be times when a procedure is necessary.