Hej,
When given the option: Should I manage the BGP session myself, or is it preferable to delegate it to the upstream provider whenever possible?
Depends on how much interest you have in BGP and what the upstream charges for managed BGP.
To conserve CPU/RAM resources for Tor, is it advisable to only use a default route (0.0.0.0/24) rather than a full routing table, relying on the upstream provider for full routing?
If you are single homed, receiving full v4 and v6 tables is imho a waste of cpu cyles. I'd go for receiving v4 and v6 default routes.
But playing around with BGP would totally justify full tables :)
Under what circumstances should I implement multi-homed strategies myself versus allowing the upstream provider to manage them?
For multi-homed you'd need two different upstream providers.
Your transit is hopefully multi-homed anyway and depending on their BGP community traffic engineering capabilties you can traffic engineer yourself quite a lot apart from using as-path prepends and MED.
https://www.noction.com/blog/bgp-community-based-traffic-engineering
Are there best practices for route filtering or failover management?
If you only receive default routes you save yourself the trouble for elaborated filtering.
Otherwise take a look here: https://bgpfilterguide.nlnog.net/
What are your experiences regarding the compute and memory requirements for these configurations?
memory for a full table is a couple of 100 MB. CPU cycles depend on the amount of route changes and the filtering you do. All in all it is not very resource heavy compared to tor traffic forwarding and crypto stuff.
What are some preferred monitoring solutions? bgpmon.net doesn't seem free...
you could host https://github.com/nttgin/BGPalerter yourself (it is using ripe ris as data source)
https://packetvis.com/ is a hosted bgpalerter for free
relatively newish: https://bgpwatch.cgtf.net/
you could ask bgp.tools for a free account
have fun!