Let's keep the WPSC_Purchase_Log object pure.  The max_purchase_id() function, and related invalidation routine - they don't actually have anything to do with a purchase log, they are related more directly to the sales log list table class.  And because the $max_purchase_id variable is really only needed once - I wouldn't bother putting that in a function at all - just put that code where you have it called currently.

As far as where to put the invalidate_max_purchase_id_transient function and related add_action call - it can't go in any admin-only files, as it needs to be called on the front-end as well - I think tacking those at the bottom of misc.functions.php is a fine enough spot for now.