Supervised learning approach - creating my own labels
The approach you're describing might be good but the main question is how the automatic labeling works. You say you can "create a function to label the data based on behavior": what is the behavior? Do you manually decide the label or is entirely automatic? If it's completely automatic and general enough so that it can work for any instance, then you don't need any ML since you can directly apply your function. On the other hand if it's specific to a subset of data (or requires some amount of manual decision) then it makes sense, and the challenge will be whether the features are informative enough to predict the label for fresh instances from a different subset. ML assumes that your test instances come from the same distribution as the training set.


  Create a new feature column called "label" that classifies accounts based on a user defined function that IDs spikes in volume. Is this feature engineering ? 


It's not feature engineering if it's the class that you will try to predict later with new instances. Feature engineering would be selecting particular features, for example instead of volume amount you could have minimum, maximum and mean volume, or discretizing the time, etc.