Static vs Dynamic methods in WordPress

This question is about the famous debate on using Dynamic methods over static methods in classes. According to my research the widely acknowledged idea is to limit the use of static methods as much as we can.

If you need to store something it’d need to be a static member variable, which is problematic. Just use dynamic methods, they have many advantages over static, and static has very few advantages and lots of known disadvantages. But as you said this is a debate, and if that is correct then it has no place here. Stack Exchange is a Q&A site, not a discussion forum, you need to be able to mark an answer as canonically correct

1- If I create a new instance of the class in the sidebar I am worried about the one ‘shortcode’ and two ‘init’ hooks within the constructor and I am worried weather they would affect performance.

If your init routine is expensive enough that doing it twice impacts performance, then something is seriously wrong with your init routine. Are you making remote requests or fetching thousands of posts ( or fetching a handful of posts via WP_Query with post meta parameters? )

Even then, just test it. Implementing it then comparing the page loading times and query counts isn’t difficult, use a plugin such as query monitor to do it

2- Instead of fetching the post meta one time. Now I am fetching it two times for the same value. One in the shortcode and other in the sidebar.

This is a non-issue

Ignoring that fetching a post meta value by it’s key and post ID is a very fast query, all of this is cached in memory. If you have an object cache it will even persist across requests.

In fact, WP pre-emptively fetches the post meta for you to save time by grabbing all of a posts meta in the same query.

Ironically, those people who try and limit what WP_Query fetches so that they can only query for what they need are the ones with the slowdowns due to lots of small queries to fetch things

So no, post meta is only fetched once, and cached. To fetch it twice you’d need to write the raw SQL to do so