If driving in is too expensive and bus is too uncomfortable, try taking a taxi from Johor Bahru. Taxis are available at Plaza Seni (just opposite City Square). The taxi departs as soon as it has enough passengers and goes to Queen Street taxi station (nowhere else if it's a Malaysian-registered taxi). It costs RM10 per person to take the taxi ride. If you are in a hurry you can pay RM40 and get the whole taxi by yourself. From Singapore, you can take the same taxi for S$10 per person.
If you intend to go to a specific place in Singapore (other than the taxi station), you can catch a Singapore-registered taxi from Plaza Seni and negotiate a fare. It'll usually be quite expensive this way. I prefer to take it straight to Queen St. and then take an MRT from there to anywhere else.
Similarly if you are returning from Singapore and would like to go anywhere specific (other than a taxi station), take a Malaysian-registered taxi and negotiate a price. I paid an extra RM10 to get all the way to New York Hotel, which makes up to an extra RM2.50 per person. Not bad.
Updated By zuyao