Best Practices

I still don't see any real benefit of passing in IDs other than "if we decide to switch", but then again, we don't know what we're going to switch to so we don't know if that's a requirement. 

A few more reasons:
1) When you call #delay it does not serialise an ID, it serialises the whole object. 
2) Also, why would you treat AR models differently? If you serialise a PORO you don't pass in an ID, simply because you can't. 
3) proc/lambda argument does not apply to AR models, DJ reloads AR models automatically 
4) having a full thing serialised helps with debugging easier i.e. you can see the diff between current and past state of the object, you don't need to load the object when inspecting a job in the UI etc.

All in all I see this rule as FUD that has a cost associated with it but no real benefits :)