А вы я смотрю не угомонитесь никак.
С токи зрения конкретно реализации разницы нет, с точки зрения читаемости кода - второй вариант.
Просто прочитайте код:
1) вернуть инстанс если он есть иначе вернуть результат присванивания инстанс равен инстанцирование себя
2) если у нас нет инстанса, то мы создаем его, затем мы возвращаем инстанс.
хватит гоняться за экономией за символами, а если мы говорим о коде который лежит в основе, то лучше выбрать вариант чуть более многословный зато понятный каждому и с первого раза.
И да, сингелтоны это хорошо, но не очень. И если в вашей системе есть необходимость в базовом классе для сингелтонов и каждый компонент построен на его основе - у вас проблемы с архитектурой.