C#, 816 803 741 737737 703 chars
class r{static void Main(){new u("%{1{2{3{4{5{6?|£[){gi+, ne+r&gi+?@"]^(Gi+^ upOoh,>-)?|{?0|*?We'+]n|£^I each#forjust sowanna:3%&Gotta long8r2u+ersta+^*|$(Ooh)!gi<, hear9ach=ne<r_gi<^(G-)^|*!g-!let% but8}7odown!run1rou+{desert%!2cry!say>oodbye!t31 shy7lie{hurt%^|3ell|2make% say|#^We'<4n it?Insideeach weo/r both]for wha9go=s;long[r onhear~1ch?We]@e gamebut[.:we}&playo;shy:;s=Inside it?|-?[,we 1)|8?You|$both}wha~>o?I just wanna ;^!Gotta _ understand?|on^We}/>ame{we._pl=|!^Ne<r_|& how I'm feel=feel?|0Ne+r&|1gi+^ up|2let^ down|3run around:desert^|4_ cry|5say goodbye|6;^|_>onna a|=ay lie:hurt^|~_|_make^|^it^|[^You|^
|-i<% you|&up|% gonnayou|{1+ |?\r\n|: and |;tell|[(Ooh|]}4 know|#|4 otherknow|~t's |+ve|=ing|7been|: to|9t'st|;o been|<ve|> |}'re|@g|?ing|/the|.'re|+nd|1 th"a");}class u{public u(string c){var a="We} no strangers7 lo+8]@e. rulesn;strangers:so do;love[}/ I?Arules{s;d;I^A full commitment's what I'm@ink= of8 wouldn't get@is from any#guy$%*AndI'm:hink? if^of[ askwouldn't>et:his me!Don'tfrom1ny ;o/r>uy£#A+ me^}7oif%1sk blind7me&Don't:3 see?%%--?££*$%%%";foreachme%.:o;bli+:;see^**]]^$$#£**";foreach(var b in c.Split('|'))a=a.Replace(b[0]+"",b.Substring(1));System.Console.Write(a);}}}
class r
{
static void Main()
{
new u("%{1{2{3{4{5{6?|£[){gi+, ne+r&gi+?@"]^(Gi+^ upOoh,>-)?|{?0|*?We'+]n|£^I each#forjust sowanna:3%&Gotta long8r2u+ersta+^*|$(Ooh)!gi<, hear9ach=ne<r_gi<^(G-)^|*!g-!let% but8}7odown!run1rou+{desert%!2cry!say>oodbye!t31 shy7lie{hurt%^|3ell|2make% say|#^We'<4n it?Insideeach weo/r both]for wha9go=s;long[r onhear~1ch?We]@e gamebut[.:we}&playo;shy:;s=Inside it?|-?[,we 1)|8?You|$both}wha~>o?I just wanna ;^!Gotta _ understand?|on^We}/>ame{we._pl=|!^Ne<r_|& how I'm feel=feel?|0Ne+r&|1gi+^ up|2let^ down|3run around:desert^|4_ cry|5say goodbye|6;^|_>onna a|=ay lie:hurt^|~_|_make^|^it^|[^You|^
|-i<% you|&up|% gonnayou|{1+ |?\r\n|: and |;tell|[(Ooh|]}4 know|#|4 otherknow|~t's |+ve|=ing|7been|: to|9t'st|;o been|<ve|> |}'re|@g|?ing|/the|.'re|+nd|1 th"a");
}
class u
{
public u(string c)
{
var a = "We} no strangers7 lo+8]@e. rulesn;strangers:so do;love[}/ I?Arules{s;d;I^A full commitment's what I'm@ink= of8 wouldn't get@is from any#guy$%*AndI'm:hink? if^of[ askwouldn't>et:his me!Don'tfrom1ny ;o/r>uy£#A+ me^}7oif%1sk blind7me&Don't:3 see?%%--?££*$%%%";me%.:o;bli+:;see^**]]^$$#£**";
foreach (var b in c.Split('|'))
a = a.Replace(b[0] + "", b.Substring(1));
System.Console.Write(a);
}
}
}
No more optimisation - I had to write myself a quick n dirty zip engine to get it this small!