Basically biztalk is tightly coupled with SQL Server, meaning biztalk has many databases and BizTalk persists the context of your instance to SQL Server database many times. ALso whenever your instance is idle for certain time, biztalk saves the context into the database. There are different persistence points like (start of orchestration, end of orchestration, after send port etc).
Hence, while saving the context into the database, everything (variable, message etc) is being saved to the database. Saving to the database needs serialization..
As suggested above, there are alternatives of using some Atomic scope if you wish to use non-serializable object. No presistence occurs within atomic scope.