Give them all a try and see what better fits your work flow.
VST automation affords high controller resolution, and it tends to track nice if you want to use physical buttons, faders, and knobs to ‘play’ sounds in real time.
Whatever you’re using…you’re never ‘stuck’. You can always change on the fly for what works best and makes sense for the task at hand.
Cubase makes it really easy to convert automation lanes to CC lanes within MIDI parts, and or Note Expression. In this case you establish the range with the loop start/end indicators, set up an empty track, solo whatever track(s) you want to convert, and use some of the options of the “Merge MIDI in Loop” function. Your newly rendered track can have the VST Automation Tracks/Lanes converted into CCs on the new track (non destructive to the originals).
You can also do it the other way around (even easier). Extract MIDI CC from parts to VST automation lanes. In the main MIDI menu, you should find options to extract CC to Automation lanes. There are also functions in there to convert between CC and Note Expression.
With an open mind and an awareness of the power of tracks and track-lanes, it’s good to know you can easily ‘extract’ and ‘merge’ pretty much anything you like from one place and format to another in Cubase. Use this powerful flexibility liberally, and you can keep up with every change, test and compare it before you commit. It just takes a little time and practice coming up with your personal workflow.
In short, the good news is you can experiment and go with what fits your ears and workflow the best
It only takes seconds to clone a copy of your track(s) and convert them to whatever you need with your new ‘clone’ (your original track is left alone in case you screw up), try things, and if you decide not to commit to the experiment go back to your original version of the track and try something else.
In most cases I doubt you can ‘hear’ much difference. If you had science lab grade scopes and stuff to analyze the output you might ‘see’ it on the scopes (the resolution difference in changes to a parameter), but the average human isn’t going to hear it up front. There might be some exceptions depending upon the plugin and what exactly you’re modulating where ‘any’ human with average or better hearing doing an A/B comparison could tell it’s different, but I think that would be more of an exception than the rule. It’d need to be something exposed and sitting in a sweet spot of acute awareness for human ears and hearing psycology.
Personally I go with CCs living in the MIDI parts when composing, simply because it’s all there in one editor, and i can take advantage of the MIDI Logical Editors and such. Logical Editors truly come in handy! I use those to make quick work of things that’d take all freaking day to slice up and sort out in Automation lanes (I wish they’d have the Boolean style logical editors for the Automation Lanes too…maybe someday). It’s also possible to emulate more complex ‘scripting like’ routines by using macros to combine the fruits of multiple Logical Editor results.
Some examples of things you can do in the MIDI editors…
In a few clicks…add at the same MIDI tick as the start of each note a CC11 (Expression Volume, or Volume 2 [scales with the main Volume]) that matches note number/pitch for all selected events (expression volume gets louder as notes go higher, and softer as notes go lower). Then run another pass to scale it all up or down 10%, then another pass to ‘invert’ the CCs so it gets softer as notes go higher, and louder as notes go lower, then a final pass to accent beat 1 of every measure with a velocity increase of 5%.
Also with MIDI Logical Editors…
Since there’s no way to insert autonomous events out of thin air (a track needs at least one event in place to convince it to insert new events of any kind), I do keep a pile of template tracks with various known notes/intervals/rhythmic-patterns and CCs in strategic places to use as a ‘guide’ for building standard but complicated sorts of controller patterns, curves, and so forth. I can quickly generate patterns using these templates, extract them, and then apply them to MIDI parts or Automation lanes. I make such reference tracks part of my templates (hidden tracks until needed, that aren’t connected to any input source nor output instruments/ports…just reference material for logic editors to borrow from when needed).
Using a combination of macros, project, and midi logical editors, you can devise a lot of quick solutions to do complicated things with just a key combo or a few clicks.
At this time, we don’t get that kind of ‘scripting like’ power when working directly with VST Automation Tracks. While the Automation lane features make sense in a ‘brain to hands to results’ way of thinking (using physical faders and knobs in real time), sometimes it’s nice to be able to save all that time and rough in general shapes with a ‘script’ of some sort, then ‘fine tune’ it by hand afterward.
You get the idea…Logical Editors can be very powerful, and save tons of time. In contrast, reading and writing to Automation lanes make more sense if you have nice physical controllers hooked up and want to do this kind of stuff ‘by feel’, and ‘play in the mix’.
If I wish to use physical buttons, faders and pots when it comes time to mix things down (main volume and pan), then I’m more likely to convert at least some of the CCs to automation lanes (Will do as I go).
If it’s a project where I’ll constantly be cutting and pasting passages/phrases to reuse elsewhere in the composition, doing lots of post composition quantizing, and/or stretching/shrinking phrases to hit specific cues on the timeline, I’ll convert automation and CCs to NE at appropriate times (Expressive parameter changes get bound to individual notes in special VST3 containers). When making MIDI loops (might be used at any tempo in the future, prone to being stretched, shrunk, re-quantized, etc) I like to make my last steps converting as much as possible to NE before stashing the loop in the tool box.
Why NE (Note Expression)? If you have a bunch of events floating on CC controller or VST automation lane(s) they’re still bound to specific clock ticks, and aren’t linked in any way to the ‘notes’ they go with. If you change something about the notes themselves, say a slight timing shift, changing the note length, whatever; then, the changes to the notes are independent of the controller data that goes with the notes. That means you might need to also go make adjustments to the automation/cc lanes AGAIN to go along with your edits to the notes.
If you zip it all together as NE, it sticks to the notes and can be stretched, shrunk moved, copied, pasted, sliced, glued, etc, along with the notes themselves. In the case of changing note lengths your expression data should automatically ‘scale’ with the note length. I.E. Say you have a passage with sforzando and crescendo effects using CC11. If that expressive data is in NE format…and you cut those notes and use them elsewhere, the controller data goes with them. Otherwise, you’d have to remember to go back and copy/paste that controller data in other steps.
Note, you CAN bind the common channel CCs (they effect every note sounding on the channel together) as NE directly to the notes (rather than floating independently on the controller lane), and in Cubase it’ll still work with instruments that are not truly NE compliant (It simply sends MIDI CCs), and only accept the traditional ‘channel’ controllers.
Cubase can still send regular CCs bound up in the VST3 NE note container. Instruments interpret it as regular channel CCs. In cases where multiple notes have overlapping or potentially conflicting channel based events bound to them as NE, you get options on how Cubase will prioritize and transform such conflicts into something sensible for channel CCs (average the results, or choose from some other priority options).
Some of the more modern plugins can have expressive controls truly independent on a note by note basis (I.E. Two notes living on the same channel, one could bend up while another bends down at the same time). In short, a NE compliant instrument can have a slate of real time VST parameters registered for every single individual sounding note. With full HALion I believe a user can define up to 8 NE parameters per instrument slot. With Sonic some of the instruments have some NE stuff predefined (and many do not), but I don’t think a user can just go in and add NE stuff to the mod matrix like a full HALion user can.
It’s also my understanding that if a non NE instrument gets special VST3 instructions to manipulate a parameter it doesn’t understand when a note with NE extended info plays, it simply ignores the extended bits while still playing the stuff it does understand, so no harm done.
So, check your plugins to see if they support Note Expression (NE, under the hood, is just another way of embedding links to a specific VST parameter, or to bundle up CC events in a way they are attached to an individual note). Many of them at least have ‘partial’ support for NE these days (the main parameters for Master Volume, Pan, Volume 2, tune or pitch-bend). Since loads of plugins still support ‘libraries and instruments’ going back decades, it’ll be common to find that some things for the plug in support NE, while some do not. It’s worth looking into it 
Again, you can bind regular CCs to notes as NE, and those should work with any plugin that accepts channel CCs. The extra NE goodies are simply very nice to use when you know an instrument supports it. In effect, full NE support is like getting another layer of real time parameters for each individual note in addition to the channel-wide parameters.