Hi Justin,
I would suggest you to create pre operation plugin on create of account record. Using context you can retrieve user business unit.
Please refer below code for your reference:
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = (IOrganizationService)serviceFactory.CreateOrganizationService(context.UserId);
Guid UserId = context.UserId;
Guid BUId = Guid.Empty;
string BUXmlString = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
<entity name='businessunit'>
<attribute name='name' />
<attribute name='parentbusinessunitid' />
<attribute name='businessunitid' />
<order attribute='name' descending='false' />
<link-entity name='systemuser' from='businessunitid' to='businessunitid' link-type='inner' alias='aa'>
<filter type='and'>
<condition attribute='systemuserid' operator='eq' uitype='systemuser' value = '" + UserId + @"' />
</filter>
</link-entity>
</entity>
</fetch>";
FetchExpression BUFetchXmlQuery = new FetchExpression(BUXmlString);
EntityCollection BUFetchXmlResult = service.RetrieveMultiple(BUFetchXmlQuery);
if (BUFetchXmlResult.Entities.Count > 0)
{
BUId = BUFetchXmlResult.Entities[0].Id;
}
Entity Account= (Entity)context.InputParameters["Target"];
Account.Attributes["fieldlogicalnameofbusinessunitonaccount"] = // Pass here entityreference of Business Unit entity
context.InputParameters["Target"] = Account;