BJP is a national party. Shiv Sena is a regional party. They are in alliance and part of NDA. At one time both parties had Hindutva as main agenda and that brought them close. BJP had alliances with regional parties which lasted a few years. It had alliance with TDP in Andhra Pradesh. It had alliance with AIADMK in Tamil Nadu. That broke down in 1999 and BJP had alliance with DMK and its associates which broke down in 2004. BJP and Shiv Sena had differences over certain matters over the years and they had ended in compromise.
An alliance is for winning elections. If your alliance partner votes for candidate of rival alliance then that alliance is of no use. That happened in 2007 Presidential election when Shiv Sena did not vote for BJP candidate Bhairon Singh Shekhawat but voted for Congress candidate Pratibha Patil because she was Marathi. In 2009 Shiv Sena was ready to support Sharad Pawar as Prime Minister instead of Lal Krishna Advani.
In 2009 Maharashtra Legislative Assembly elections BJP contested less seats than Shiv Sena but won 46 seats as against Shiv Sena’s 44.
Shiv Sena is back to regionalism. BJP has publicly opposed regionalism. Shiv Sena criticised RSS leaders Mohan Bhagwat for saying Indians can go anywhere and Ram Madhav for saying RSS members should protect North Indians in Maharashtra.
Shiv Sena has been for Marathi people. At one time South Indians were targets. Marathi agenda did not have appeal outside a few cities in Maharashtra. Shiv Sena adopted Hindutva to broaden its appeal. Shiv Sena once again stressing its Marathi agenda is an embarrassment to BJP.
As long as people like Narendra Modi and Feroze Varun Gandhi are in BJP there is not much chance of BJP coming to power at Centre. Sangh Parivar does not have problem if Shiv Sena targets Muslims. It has problem when Shiv Sena targets Hindu North Indians. BJP’s alliance with Shiv Sena becomes a liability in North India.